AtCoder Regular Contest #003

結果
D言語でやるかー、と思ってAやっていたら何故か合わずにあせった。A~EでなくA,B,C,D,Fになっていて、はーそーなんですかと思いつつ修正してAC。
Bは反転するだけだと思って実装するとコンパイルエラー。std.algorithmのreverseは返り値がvoidなのでreverse(a) < reverse(b)みたいな書き方はできないのだった。
Cはぱっと見二分探索でいけそうだったけど、queueの使い方よく分かってなかったのでC++で書いた。添字ミスとかshadowingとかでバグに気づかなかった。手抜きでコンパイルオプションなしでやっていたのが良くなかった。1WAの後、答えの最小値が十分小さくなることを確かめた上で再提出してAC。
Dは制約が怪しいので出題者を念頭に置きながらモンテカルロかなー、と思いつつ真面目に考えてみる。10!とかでてくるけど、さらに最小完全ハッシュの変換で100倍とかになり流石に無理げ。ということでモンテカルロ実装する。何回試せば十分かよく分からなかったのでタイマー使って9秒くらい回すことにしたけど、そういえばAtCoderってマシン毎の速度差を実際の実行時間に定数倍かけて調整してるんだっけ、それならヤバげだなーとか思っていたけど、とりあえず提出してみた。提出直後にデバッグ出力消し忘れてたことに気づき、デバッグ出力消してついでにシミュレーションの部分を高速化しようと思っていたら突然コンテスト終了の合図が…。1時間30分だったらしい。2時間だと思ってた。