第30回国際情報オリンピック(IOI 2018 JAPAN) 日本大会 参加報告

日本選手団 団長 小倉拳

  1. 概要
  2.  第 30 回情報オリンピック日本大会(IOI 2018)は 2018 年 9 月 1 日から 9 月 8 日まで,日本のつくば市で開催された.
     開会式は つくば国際会議場 で行われた.選手の宿舎は 教職員支援機構(NITS) であり,随行員の宿舎は オークラフロンティアホテルつくば(エポカル) であった.閉会式も つくば国際会議場 で行われた.
     IOI 2018 には 87ヶ国・地域から 335 名の選手が参加した(公式参加者数).競技は 9 月 3 日と 9 月 5 日の 2 日間にかけて行われた.各競技日の競技時間は 5 時間であり,出題された課題数はそれぞれ 3 題(2 日間で合計 6 題)であった.競技結果に基づき上位者には金・銀・銅のメダルが授与された.全参加者の約半数にメダルが授与され,金・銀・銅の割合はおよそ 1:2:3 と定められている.今年は金メダルが 29 名(全参加者の約 9 %)に,銀メダルが 55 名(全参加者の約 16 %)に,銅メダルが 83 名(全参加者の 25 %)に与えられた.
     IOI 2018 における日本代表選手の成績は,金メダル 1 個,銀メダル 1 個,銅メダル 2 個であった.特別参加選手団の成績は,金メダル相当 1 個,銀メダル相当 2 個,銅メダル相当 1 個であった.
       
    IOI 2018 日本選手団
     日本代表選手
     金メダル  井上 航  北九州工業高等専門学校3年
     銅メダル 清水 郁実 N高等学校3年
     銅メダル 行方 光一 筑波大学附属駒場高等学校2年
     銀メダル 細川 寛晃 灘高等学校3年
     
     日本選手団役員
     団長 小倉 拳 東京大学工学部計数工学科4年 (IOI 2014 選手)
     副団長 松崎 照央 筑波大学情報学群情報科学類3年 (IOI 2015 選手)
     
     特別参加選手
     銅メダル相当 岸田 陸玖 京都市立堀川高等学校3年
     銀メダル相当 平木 康傑 灘高等学校1年
     銀メダル相当 米田 寛峻 開成高等学校1年
     金メダル相当 米田 優峻 筑波大学附属駒場高等学校1年
     
     特別参加選手団役員
     団長 當眞ジェイソン翔  東京大学工学部計数工学科4年
     副団長 松下祐介 東京大学理学部情報科学科4年

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



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

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

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

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

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

     (4) 翻訳 : 競技日の前日の夜には副団長・随行員により問題文の翻訳が行われた.
     今年の翻訳システムは Markdown 形式のもので,すべての編集がサーバー上に保存され,システム上から印刷を要求できるなど,使いやすいものであった.Wifi環境にバグがあり,編集サーバーにアクセスできないことがあったが,大きな問題にはならなかった.日本語フォントについては,完全に自然なものであった.

  5. その他・感想など
  6.  今年の IOI はいくつかの要因で予定が先送りになったことはあったが目立った問題はなかった.一日目は競技前のトイレの列が解消しなかった関係で競技開始が遅れたが競技システム自体に問題はなかった.観光や開会式・閉会式のスケジュールは厳守されていた.ご飯の質は中の下くらいであったが,日本通貨を持っている選手団は近くのラーメン屋に食べに行くなどして水準を保てていた.近くには家電量販店があり,選手がマウスを持ってき忘れても,そこで購入して間に合わせることが出きた.気候や文化は母国ということもあり困難は一切なかった.


  7. おわりに
  8.  今年は去年に比べるとメダルの色は劣りますが,特別選手団含め,全員メダルを獲得するというすばらしい成績をおさめることができました.今回,IOI 2018 への選手団派遣を無事に終えることができましたのは,日頃より情報オリンピックの活動にご支援をいただいている皆様ならびにIOI2018運営に携わった皆様のお陰です.この場を借りてお礼を申し上げます.どうもありがとうございました.日本選手はちょうど代替わりの時期です.非公式選手団の若い世代の方々が良い成績を収めているのでこれからの結果に期待できます.今後ともよろしくお願いします.