第29回国際情報オリンピック(IOI 2017) イラン大会 参加報告

日本選手団 団長 隈部壮

  1. 概要
  2.  第 29 回情報オリンピックイラン大会(IOI 2017)は 2017 年 7 月 28 日から 8 月 4 日まで,イランのテヘラン市で開催された.
     開会式は Milad Convention Center で行われた.選手の宿舎は Evin Hotel であり,随行員の宿舎は Azadi Hotel であった.閉会式は International Convention Center で行われた.
     IOI 2017 には 83ヶ国・地域(遠隔参加の1ヶ国を含む)から 308 名(遠隔参加の4名を含む)の選手が参加した(公式参加者数).競技は 7 月 30 日と 8 月 1 日の 2 日間にかけて行われた.各競技日の競技時間は 5 時間であり,出題された課題数はそれぞれ 3 題(2 日間で合計 6 題)であった.競技結果に基づき上位者には金・銀・銅のメダルが授与された.全参加者の約半数にメダルが授与され,金・銀・銅の割合はおよそ 1:2:3 と定められている.今年は金メダルが 26 名(全参加者の約 8 %)に,銀メダルが 52 名(全参加者の約 17 %)に,銅メダルが 78 名(全参加者の 25 %)に与えられた.
     IOI 2017 における日本代表選手の成績は,金メダル 3 個,銀メダル 1 個であった.全員が銀メダル以上の結果を残した上,特に金メダルを取った 3 名は 1,4,5 位と非常に素晴らしい順位で,メダル獲得数・合計点ともに 1 位という過去最高の結果を残すことができた.特に合計点については, 2 位以下を大きく引き離す圧巻の出来であった.
     
    IOI 2017 日本選手団
     日本代表選手
      金メダル  川﨑理玖  筑波大学附属駒場高等学校3年
      金メダル 河原井啓 筑波大学附属駒場高等学校3年
    金メダル 髙谷悠太 開成高等学校3年
      銀メダル 坂部圭哉 海陽中等教育学校6年
     日本選手団役員
      団長 隈部壮 東京大学工学部計数工学科3年 (IOI 2013 選手)
      副団長 佐藤竜馬 京都大学工学部情報工学科3年 (IOI 2014 選手)
      随行員 小倉拳 東京大学工学部計数工学科3年 (IOI 2014 選手)

     IOI は個人戦であり公式データとしての国別順位は存在しない.公表された成績に基づいて算出したところ,メダル獲得数による日本の国別順位は 1 位である.総得点による日本の国別順位も 1 位である.



  3. 競技について
  4.  IOI は数あるプログラミングコンテストのうちの 1 つであるが,同時に数ある科学オリンピックの 1 つでもあり,中高生を対象としていること,必要な知識を最小限にとどめ柔軟な思考力を問うこと,代表選手が世界各国から集うという特徴がある. 競技では,与えられた開発環境を用いてプログラム (C++, Java または Pascal) を作成してソースファイルを競技サーバから提出する.提出したプログラムは競技サーバ上でコンパイル・実行され,その実行結果に基づき得点が与えられる.また今回は,与えられたデータセットに対し,なるべく良い解を作って提出し,その解の良さに応じて得点が与えられる課題も出題された.実行時の時間・メモリに制限があるため,効率の良いアルゴリズムを設計することが重要となる.早く提出することによるメリットや,誤った解答を提出した場合のペナルティは無い.選手には,高度な課題に対して,5 時間の競技中にじっくりと取り組むことが要求される.
     競技時間内であれば解答の再提出も可能である (提出回数の制限は各課題ごとに 50 回であるが,通常この制限を超えて解答を提出することはあり得ず,実質的に提出回数は無制限と言える).
     IOI 2017 で出題された課題は以下の 6 題である.
               
    IOI 2017 競技課題
     競技 1 日目    ノウルーズ (Nowruz)
      配線 (Wiring)
      電車のおもちゃ (Toy Train)
     競技 2 日目 The Big Prize (The Big Prize)
      Simurgh (Simurgh)
      古文書 (Ancient Books)

     いずれも数理的思考力が問われる良問である.各課題はいくつかの小課題に分割されている.小課題の中には,単純な実装で得点が得られるものから,高度なアルゴリズムを実装しないと得点が得られないものまで含まれている.従って 1 つの課題を丸ごと落として 0 点になってしまう可能性は少ないが,満点を取るのは難しい.
     また,すべての問題の満点の配点は同じため,比較的簡単な問題では満点を取りたいところであるが,他のプログラミングコンテストと違い,選手はコンテスト中に順位表を見ることはできない.このため,選手は問題の難易度も一人で判断し,コンテスト中の時間配分を考えなくてはいけない.
     IOI はプログラムの作成技術を競う大会ではない.技術力があるに越したことはないが,それよりも IOI で重視されるのは数理的な思考力・洞察力である.競技では課題の本質を見抜く力が問われ,(気づけばそこまで難しくはないものの) 一見して何をしたらいいか分かりづらいような問題も出題された.

     (1) 競技規則の変更 : IOI の競技規則は毎年少しずつ改訂されている.IOI 2017 における大きな変更点は以下に挙げるものである.
      ・選手は提出に対するフィードバックを観察することで,入力の内容を解析し,採点に使われるテストデータにのみ正答するプログラムを提出してはいけない.

     (2) 競技実施方式 : 去年に引き続き,IOI 2017 で出題された課題の形式は,一問を除いて,与えられたデータを処理する関数(プロシージャ)を実装したソースファイルを提出する方式 (プロシージャ方式) である.残りの一問,Nowruz は,出力ファイルのみを提出する形式の問題であった.
     提出されたソースファイルは競技システム上ですぐにコンパイル・実行・評価される.競技参加者にフィードバックが返され,自分の得点を知ることができる (現在の競技規則では,すべての提出に対して完全なフィードバックがあることが明記されている).満点でなかった場合は,どの小課題で失点したかを知ることができる.
     競技の途中経過はスコアボードとしてリアルタイムに全世界に公開された.日本から観戦した人も多くいたようである.ただし,先述のように競技時間中はスコアボードは選手には公開されない.選手が競技時間中に知ることができるのは,自分の得点だけである.
     去年と同様に,プログラム中で実装すべき関数の仕様を言語ごとに説明する「実装の詳細」節は問題文から省かれた.

     (3) 競技システム : 競技時間中,選手にはノート PC が 1 人 1 台与えられた.選手の PC には開発環境と,競技システムにアクセスするためのウェブブラウザがインストールされている.また,席を間違えないよう各PCの壁紙画像に各選手の顔写真が埋め込まれた.
     競技システムは,去年の IOI とは違い,CMS が用いられた.インターフェースは簡潔で,また JOI 本選や春合宿等でも使用していることもあり,その使い方については選手が自ずと理解できたようである.

     (4) 翻訳 : 競技日の前日の夜には副団長・随行員により問題文の翻訳が行われた.
     今年の翻訳システムは Markdown 形式のもので,すべての編集がサーバー上に保存され,システム上から印刷を要求できるなど,使いやすいものであった.編集権限関連にバグがあり,編集中に頻繁にトップページに戻されてしまったが,大きな問題にはならなかった.日本語フォントについては,完全に自然なものであった.技術委員の努力には敬意を払いたい.

  5. その他・感想など
  6.  今年の IOI は,やや予定が過剰気味だったようで,多くの予定に遅れが生じていた.競技は両日定刻に始まったが,競技システムのトラブルにより,一日目は競技終了が延長された選手がおり,二日目は全選手の競技時間が三十分延長された.観光や開会式・閉会式のスケジュールは守られていなかったが,これはバスによる移動のための待ち時間や,バスでの移動時間が長かったところが大きい.例外的に,選手・役員の宿舎と,競技の会場・GA meeting のホールは 1 つの施設に収まっていたので,競技や,前に観光のない GA meeting などの開始の遅れは比較的小さかった.隔離のため選手の宿舎・競技会場と役員の宿舎・翻訳会場は異なったが,それでも徒歩で問題ない距離で,競技や選手と団長団との意思疎通においては,移動の手間はとても少なかった.高級ホテルにて開催されたため施設の衛生面は問題なかったが,大気汚染が激しく,また乾燥した気候であったため,一部の役員が体調を崩していた.


  7. おわりに
  8.  今年は金メダル 3 個,銀メダル 1 個と,すばらしい成績をおさめることができました.今回,IOI 2017 への選手団派遣を無事に終えることができましたのは,日頃より情報オリンピックの活動にご支援をいただいている皆様のお陰です.この場を借りてお礼を申し上げます.どうもありがとうございました.日本は IOI の開催を翌年に控えており,今後は今まで以上にお世話になることも多いと思います.今後ともよろしくお願いします.