GCJ Onsite Locals

ということなので、ちょっと休暇を戴いて渋谷のGoogleオフィスまで行ってきました。前行ったときには1フロアだったような気がするのですが、順調に4フロアに増えていました。

参加者の大半は知ってる人で、あるいはそうでなくともほとんどはハンドル名を目にしたことのある人でしたが、久しぶりに会う人も多くて楽しかったです。Google社員の方々にも見知った顔が結構いて、なんというか、世間は狭いなとか思いました。

コンテスト自体は今までとさして変わることはなく、2時間4問で大小の入力があるような形式でした。英語キーボードだったら苦しいので、一応家からRealForceというキーボードを持って行っていましたが、用意されていたのが日本語キーボードだったので、深く考えずそれを使うことにしました。しかしなんだか微妙に幅が狭くて、カーソルキーに手を伸ばすとテンキーの1とか0とか辺りを押してしまうだとか、表面がざらざらしていて左手小指が擦り切れて痛かったりとか、あまり良いことがなかったので、やはり持って行ったものを使うべきでした。

マシン環境は比較的自由で、30分の準備時間が与えられて、好きなソフトをダウンロードしてインストールしてよいとか、USBからあらかじめファイルをコピーしてよいだとかで、かなり好きなようにできました。とりあえず電卓としてGHCを入れておきました。そのほかは自宅マシンの.emacsを持って行ってFlymakeの設定をしたりだとか、キーマップ変えたりだとか、ソースのテンプレート作ったりだとか、まああまり自由でも大してやりたいことはないのですけども。

そんな感じで、コンテストが始まったのですけど、今回は私個人的には非常に劇的な結末でした。そのおかげで随分と精神的に疲れました。たった2時間でこんなに疲れたことは未だかつてなかったです。問題などは、
http://code.google.com/codejam/contest/dashboard?c=agdjb2RlamFtchALEghjb250ZXN0cxihuBQM
こちらから見れるようです。深く考えずにAに手をつけたら、入力の制約に誤植があってIncorrectを喰らって、そのまま1時間放置してしまったりとか、どう見ても簡単なDのSmallをおいしくいただこうと思ったらバグを入れまくったりだとかで、開始1時間近くまで0点だった時には今回はもう駄目かなと思ったのですが、Cで2^2mなアルゴリズムを実装して、最悪なケース1個当たり1分ぐらいかかってこれは間に合わないかなと思いながらもほかに高速化も思いつかなくて、残り8分を切ったので、とりあえずファイルをダウンロードしてプログラムに突っ込んでみたら、思ったより速くて、これはもしかしたら間に合うか、と思いつつビクビクしながら待っていると残り時間10秒ぐらいになったときに実行完了して、なんとか残り8秒でサブミットが間に合うという強運ぶりを発揮しました。これが効いて、Aのlargeを落としたにもかかわらず、なんとか上位20%には入れたようです。CPUがあと1グレード低かったら通ってなかったかと思うともう心臓に悪いです。

私がICPCをやってた頃には戦えなかった若い人たちとオンサイトで戦えて、今回は非常に新鮮な感じがしました。とても楽しかったです。しかしながら私はもう随分と昔取った杵柄だけで勝負しているような感じなので、次は(もしあれば)十分準備して望みたいと思います。