第31回国際情報オリンピック(IOI 2019) アゼルバイジャン大会 参加報告

日本選手団 団長 井上卓哉

  1. 概要
  2.  第 31 回情報オリンピックアゼルバイジャン大会(IOI 2019)は 2017 年 8 月 4 日から 8 月 11 日まで,アゼルバイジャンのバクー市で開催された.
     開会式は Baku Convention Center で行われた.選手の宿舎は Athletes' Village であり,随行員の宿舎は Boulevard Hotel Baku であった.閉会式は Heydar Aliyev Center で行われた.
     IOI 2019 には 87ヶ国・地域から 327 名の選手が参加した(公式参加者数).競技は 8 月 6 日と 8 月 8 日の 2 日間にかけて行われた.各競技日の競技時間は 5 時間であり(実際には競技2日目の競技時間は13分50秒延長された),出題された課題数はそれぞれ 3 題(2 日間で合計 6 題)であった.競技結果に基づき上位者には金・銀・銅のメダルが授与された.全参加者の約半数にメダルが授与され,金・銀・銅の割合はおよそ 1:2:3 と定められている.今年は金メダルが 28 名(全参加者の約 9 %)に,銀メダルが 54 名(全参加者の約 17 %)に,銅メダルが 81 名(全参加者の約 25 %)に与えられた.
     IOI 2019 における日本代表選手の成績は,金メダル 1 個,銀メダル 3 個であった.全員が銀メダル以上の結果を残し,メダル獲得数では 7 位タイ・合計点では 6 位とともに去年を上回る結果を残すことができた.
     
    IOI 2019 日本選手団
     日本代表選手
      金メダル  米田優峻  筑波大学附属駒場高等学校2年
      銀メダル 戸髙 空 宮崎県立宮崎西高等学校3年
    銀メダル 行方光一 筑波大学附属駒場高等学校3年
      銀メダル 平木康傑 灘高等学校2年
     日本選手団役員
      団長 井上卓哉 東京大学理学部数学科3年 (IOI 2015・2016 選手)
      副団長 伊佐碩恭 東京大学医学部医学科3年 (IOI 2014 選手)
      随行員 清水郁実 University of California, Santa Barbara (2019年9月から) (IOI 2018 選手)

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



  3. 競技について
  4.  IOI は数あるプログラミングコンテストのうちの 1 つであるが,同時に数ある科学オリンピックの 1 つでもあり,中高生を対象としていること,必要な知識を最小限にとどめ柔軟な思考力を問うこと,代表選手が世界各国から集うという特徴がある. 競技では,与えられた開発環境を用いてプログラム (C++またはJava) を作成してソースファイルを競技サーバから提出する.提出したプログラムは競技サーバ上でコンパイル・実行され,その実行結果に基づき得点が与えられる.また今回は,与えられたデータセットに対し,なるべく良い解を作って提出し,その解の良さに応じて得点が与えられる課題も出題された.実行時の時間・メモリに制限があるため,効率の良いアルゴリズムを設計することが重要となる.早く提出することによるメリットや,誤った解答を提出した場合のペナルティは無い.選手には,高度な課題に対して,5 時間の競技中にじっくりと取り組むことが要求される.
     競技時間内であれば解答の再提出も可能である (提出回数の制限は各課題ごとに 50 回(出力のみの課題では100回)であるが,通常この制限を超えて解答を提出することはあり得ず,実質的に提出回数は無制限と言える).
     IOI 2019 で出題された課題は以下の 6 題である.
               
    IOI 2019 競技課題
     競技 1 日目    靴の並び替え (Arranging Shoes)
      アトラクションの分割 (Split the Attractions)
      長方形 (Rectangles)
     競技 2 日目 壊れた線 (Broken Line)
      視覚プログラム (Vision Program)
      空中通路 (Sky walking)

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

     (1) 競技規則の変更 : IOI の競技規則は毎年少しずつ改訂されている.IOI 2019 における大きな変更点は以下に挙げるものである.
      ・Pascalが使用できなくなった.
      ・IOI2018では,選手は競技画面から,「全選手の得点のうち,何割がどの問題での得点か」という統計情報を見ることができたが,できなくなった.
      ・IOI2018では各課題の得点は小数点以下四捨五入して整数に丸められたが,従来通り四捨五入して小数点以下2桁に丸める方法に戻された.

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

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

     (4) 翻訳 : 競技日の前日の夜には副団長・随行員により問題文の翻訳が行われた.
     今年の翻訳システムも従来通り Markdown 形式のもので,すべての編集がサーバー上に保存され,システム上から印刷を要求できるなど,使いやすいものであった.初日はISC versionの決定が遅れたり,更新ログが提供されなかったりしたものの,システム自体には使用にあたり特に不便を感じることはなかった.技術委員の努力には敬意を払いたい.

  5. その他・感想など
  6.  今年の IOI は順調に運営されていたと思う.特に,ホスト国のスタッフはみな親切に対応しくれた.全体的に時間にルーズでバスの発着などはたびたび遅れていたが,スケジュールには余裕があり焦る雰囲気にはならなかった.
     選手の宿舎と競技会場は近かったが,役員の宿舎兼翻訳会場や,開会式閉会式の会場はそれぞればらばらの場所にあり,どこに行くにもバスもしくはタクシーの利用が必要であった.観光も選手と役員は別の行程で移動することが多く,選手と直接コミュニケーションをとる機会はかなり限られていた.
     役員の宿舎は高級ホテルだったため個人的には満足で体調を崩すこともなかった.選手の宿舎もさほど悪いようには見えなかったが,複数名の生徒が体調不良を訴えそのうち1名は(念のためではあるが)入院することになったので,何かしら問題があったのだと思う.何はともあれ全員予定日に帰国できたので安心している.


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