2006 TopCoder Open - Algorithm Competition の決勝戦が行われました。オンライン・ラウンドを勝ち抜けた 48 人が、ラスベガス・アラジンホテルに招待されオンサイトで 5/3-5/5 の 3 日間にわたり戦いを繰り広げました。最後に勝ち残った 8 名による決勝戦の模様は通常の TopCoder のアリーナ上でリアルタイムで見ることができました。といっても、ライブ映像が流れていたわけではなくて、こんな感じで

2006 toc final

競技者が行っている「問題を Open」「コンパイル」「テスト」「コードを提出」等の行動をリアルタイムで知ることができたわけです。問題の内容や各競技者が提出したコードもリアルタイムで見ることができました。アリーナ上では見学者が集まって、それを見ながら「あーだこーだ」いって楽しんでいます。

Final に残ったのは以下の 8 名。

  • tomek : ポーランド・Purdue 大学。現在 TopCoder でレーティングトップ。優勝候補の最右翼。
  • Petr : ロシア・モスクワ大学。TopCoder では珍しい C#使い。数々のプログラミングコンテストで名を残しているそうです。Google Code Jam 2005 でも 3 位に入っています。いつも綺麗な読みやすいコードを書いてくれるので、参考になります。
  • misof : スロバキア・Comenius 大学。
  • John Dethridge: オーストラリア・メルボルン大学。
  • andrewzta: ロシア。
  • cyfra: ポーランド・ワルシャワ大学。
  • natori : 上位陣には珍しい Java 使い。日本人です。
  • fuwenjie: 中国・TsingHua 大学。

蒼々たる面子です。。ホスト国の US 勢はひとりも Final に残れなかったのか。。問題セットは Final にふさわしく通常の SRM よりもはるかに難しいものばかりそろっています。

実況開始!

250 点問題は比較的容易だったらしく、ほとんどの競技者はそれほど苦労せずに Submit。 500 点問題も fuwenjie, Petr, tomek と続々と Submit。こんな感じでリアルタイムに問題と提出されたコードを見ることができました。

2006 tco final

優勝するには 1000 点問題を解く必要がある雰囲気が漂いはじめました。そんな中残り時間 26 分で tomek が 1000 点問題を提出!

2006 tco final

この時点でトップに立ちます。

2006 tco final

Petr が続きます。

2006 tco final

Petr 人気者です。「go Petr!!!」

2006 tco final

見学者たちは、「tomek の 1000 点理解できねー。」「tomek のは greedy algorithm だ」「Petr のはよさそうだ」とわいわいチャットしてました。

2006 tco final

Petr の 1k(1000 点問題)を見てみましたが、binary search を使用しています。。。この問題から binary search を思いつくとは。。その発想がすごい。。そうこういってるうちに、なんと natori が 1k を提出!

2006 tco final

Petr 残り 5 分というところで、500 点問題を再提出。。

2006 tco final

コーディング・フェーズ終了。現時点での順位はこのとおり。natori がトップ。tomek、Petr が続きます。

2006 tco final

チャレンジ・フェーズ

5 分間の休憩後、チャレンジ・フェーズの始まりです。 Petr 開始直後に立て続けに 500 点問題で 3 つ撃破!!いっきょにもりあがります。

2006 tco final

tomek と natori の 1k も撃墜されました。チャレンジ・フェーズ終了時点で Petr がトップにたちます。

2006 tco final

いよいよ、あとはシステム・テストの結果まちです。。。。

結果

2006 tco final

見事、Petr が栄冠に輝きました。賞金 2 万ドル Get です。。おめでとう!!結局 1k に正解したのは Petr だけでしたね。Petr の 1k は

  • Binary Search
  • Sort してから Greedy
  • union-find

と基本的なアルゴリズムの組み合わせって感じですね。見事です。。。