第22回 IOI 2010 カナダ大会は,オンタリオ州ウォータールー (Waterloo) 市のウォータールー大学で開催されました.ウォータールー市は,カナダ最大の都市トロントから西に約130kmに位置し.人口は約10万人の小さな町です.エクスカーションで訪れたナイアガラまでもバスで2時間くらいでした.ウォータールー大学は,数学やコンピュータサイエンスに強いことで有名なカナダのトップ校です.ICPC World Final でも常連で,過去2回チャンピオンになっています.今大会のメインスポンサーである Research In Mortion 社 (スマートフォンBlackBerry を製造していることで有名) の創業者の1人はウォータールー大学の卒業生で,前総長でもあったそうです.大学の近隣にも RIM のオフィスが多く見られました.そのような場所で開催された IOI 2010 ですが,その大会運営は,大変すばらしいものでした.大会組織委員会の皆様の努力に敬意と感謝を表したいと思います.
IOI 2010 における本選手は,村井君と原君が金メダル,今西君と山下君が銀メダルと今年も全員がメダルを獲得しました.選手の皆さん,おめでとうございます.そしてお疲れ様でした.ご存じのように IOI は個人戦ですので公式の国別順位というのはありませんが,メダル数によると2位タイ(1位米国,2位タイ日本・中国・ロシア)と最高の順位(これまでの最高は 2006 の6位と 2009 の6位タイ)で,選手の合計点による順位も4位(1位米国,2位中国,3位ロシア)と昨年の3位に続く好成績でした.
以下では,競技に関することを中心に感想を簡単に述べたいと思います.
昨年は課題数が1競技日4問に増え,また,増えた1問の難易度はそれほど高くなく,その課題には競技中にすべての採点用入力データ(テストケース)に対する正誤が与えられるという競技方式の改訂が行われました.今年も改訂があり,それは,主に次の4つです.
- 各課題に対して提出する採点対象は、解答プログラムか,出力のみかのいずれかである.解答プログラムを提出する課題では,選手はプログラムの一部(プロシージャー)をプログラミングし,入力や出力に関する部分は与えられたものを用いる.
- すべての課題は,2つ以上の小課題に分かれている.最初の小課題は,すべての選手が解答できることを想定している.
- 各小課題に対する得点の与え方は,fixed score か,open-ended score かのいずれかである.fixed score の小課題では,その小課題に対するすべてのテストを通った場合にのみ得点が与えられる.open-ended score の小課題では,課題中に記述されている式に従って得点が定まる.
- すべての課題に対して,競技中にすべての採点用入力データ(テストケース)に対する正誤が知ることができる.ただし,各課題に対して,30分ごとに最大2回.
これらの改訂により,いくつか大きな変化が生じました.主な変化をまとめると,以下のようになります.
- 4によりすべての課題に対して選手は提出した解答が正解なのかを競技中に知ることができるようになりました.正解解答を提出しているにもかかわらず解答の改良を続けるということや,提出した解答が正解に達していないのに気がつかず大きく失点するということが,避けられます.
- プログラムを提出する課題で fixed score の小課題では,すべてにテストケースに実行時の制約を満たして正しい出力をしないとならないので,一部の入力に対してでも間違った出力をする解答は0点となります.昨年までの採点方式では,バグが残っている解答も部分点を得られることがありましたが,今年はそのようなことはなくなりました.
- 従来は,出題者が効率良く最適解を求められる解法を知っており,出題者が想定した解法と同程度に効率の良い解法を適切に実装すれば満点を取れるタイプの課題がほとんどでした.そのようなタイプではない課題は,最近では,IOI 2006 で出題された「出力のみ」の課題2題のみです.open-ended score の課題では,プログラムを提出する課題と出力のみの課題のいずれでも,最適解を効率よく求めるのではなく,最適解に近い(質の高い)解を求めるタイプの課題を出題することが可能となっています.Day 1 の Task 4 (Language) や Day 2 の「出力のみ」の課題である Task 3 (maze) がこ のタイプの課題でした.Day1 Task 2 (Hotter and Colder) の小課題 4 も open-ended score でした.この課題では,質問を行うとそれに対する回答が与えられので,それらの回答から答えを推察するプロシージャーを作成するというものでした.小課題4では,正解に至るまでの質問回数の少ないほど高い得点が与えられました.
今回の改訂は,以前から GA meeting, IOI Conference, 関連 workshop などでしばしば議論されていた懸案事項を解消することを目指したものです.かなりうまくいったのではないかと思います.
今回,日本選手が好成績を収めることができた要因として次の2つのことが上げることができます.
- IOI における基本的なアルゴリズムやデータ構造の活用・実装に習熟
- open-endec score の課題への適応
これらは,選手の皆さんの普段からの頑張りの成果に他なりませんが,次のようなことも言えると思います.前者に対しては,春季トレーニング合宿などにおける講義や課題は,選手が勉強する際のよい道しるべになったのではないでしょうか.これは今年度だけのことではなく,毎年継続して内容を深めていった成果でもあります.実際,今年の選手は全員 IOI は初参加でしたが JOI の春季トレーニング合宿には複数回参加しています.
これまで春季トレーニング合宿にご協力いただいた皆様に,この場をお借りして感謝したいと思います.後者に対しては,春季トレーニング合宿で毎年 open-ended score の課題を出し続けたことと,日本にはスーパーコンなど IOI/JOI とは方式の異なるコンテストがあることが,役立ったと思われます.引き続き,提携プログラミングコンテストと協力して,数理情報科学に興味のある中高生に楽しんでもらえる機会を提供し続けたいと思います.
最後になりましたが,国内大会の運営,国際大会へ参加にご協力ご支援をいただいた皆さま,ありがとうございます.引き続きご支援のほどよろしくお願いします.それから,ガイドの蘭さん,どうもありがとう.蘭さんは日本をとても上手に話されるだけでなく,親身に選手の面倒をみてくれました.選手たちが実力を発揮できたのは蘭さんのおかげです.
それでは,中高生のみなさん,今年度のチャレンジをお待ちしています.