第32回国際情報オリンピック(IOI 2020)
シンガポール大会 参加報告

日本選手団 団長 坂部圭哉

  1. 概要
  2.  第 32 回情報オリンピック(IOI 2020)は 2020 年 9 月 13 日から 9 月 23 日まで,シンガポール共和国を主催国としてオンラインで開催された.
     日本選手団は東京都府中市のホテルコンチネンタル府中に集合し,実機練習や競技を行った.開会式と閉会式は YouTube にて配信され,視聴することで参加した.
     IOI 2020 には 87ヶ国・地域から 343 名の選手が参加した(公式参加者数).競技は 9 月 16 日と 9 月 19 日の 2 日間にかけて行われた.各競技日の競技時間は 5 時間であり,出題された課題数はそれぞれ 3 題(2 日間で合計 6 題)であった.競技結果に基づき上位者には金・銀・銅のメダルが授与された.全参加者の約半数にメダルが授与され,金・銀・銅の割合はおよそ 1:2:3 と定められている.今年は金メダルが 29 名(全参加者の約 8 %)に,銀メダルが 57 名(全参加者の約 17 %)に,銅メダルが 85 名(全参加者の約 25 %)に与えられた.
     IOI 2020 における日本代表選手の成績は,金メダル 2 個,銀メダル 2 個であった.

     
    IOI 2020 日本選手団
     日本代表選手
      金メダル  松尾凛太朗  麻布高等学校2年
      金メダル 米田優峻 筑波大学附属駒場高等学校3年
    銀メダル 米田寛峻 開成高等学校3年
      銀メダル 星井智仁 筑波大学附属駒場高等学校3年
     日本選手団役員
      団長 坂部圭哉 東京大学3年 (IOI 2017 選手)
      副団長 河原井啓 東京大学3年 (IOI 2017 選手)
      随行員 岸田陸玖 東京工業大学2年 (IOI 2018 特別参加選手)

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



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

               
    IOI 2020 競技課題
     競技 1 日目    植物の比較 (Comparing Plants)
      スーパーツリーをつなげ (Connecting Supertrees)
      カーニバルのチケット (Carnival Tickets)
     競技 2 日目 ビスケットの袋詰め (Packing Biscuits)
      キノコを数えよう (Counting Mushrooms)
      ステーション (Stations)

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

     (1) 競技実施方式 : 本年はオンラインでの開催ということで,選手は各国内から競技に参加した.各国で準備した PC 上で配布された仮想マシンを動作させるという方式で行われたため,ハードウェアの性能は国によって異なったかもしれないが,ソフトウェアの環境はすべての選手で統一された.
     すべての国で同時に競技が実施され,2 日とも日本時間では 20時 - 25時 の 5 時間であった.深夜まで全力を尽くした選手たちに敬意を払いたい.
     例年公開されていたリアルタイムのスコアボードは,今年は不正行為防止を主目的として,各日競技終了まで公開されなかった.

     (2) 競技規則の変更 : 競技規則の昨年からの大きな変更は無かった.

     (3) 問題形式 : 去年に引き続き,IOI 2020 で出題された課題の形式は,与えられたデータを処理する関数(プロシージャ)を実装したソースファイルを提出する方式 (プロシージャ方式) であった.出力ファイルのみを提出する形式の問題は出題されなかったが,オンライン開催であり使用 PC の性能が国によって異なるためだろう.
     提出されたソースファイルは競技システム上ですぐにコンパイル・実行・評価される.競技参加者にフィードバックが返され,自分の得点を知ることができる (現在の競技規則では,すべての提出に対して完全なフィードバックがあることが明記されている).満点でなかった場合は,どの小課題で失点したかを知ることができる.

     (4) 競技システム : 競技時間中,選手には競技用 PC が 1 人 1 台与えられた.選手の PC には開発環境と,競技システムにアクセスするためのウェブブラウザがインストールされていた.また VPN によりコンテストのネットワークに接続されており,主催者側から PC の状態を監視・制御することができるようになっていた.技術委員の努力に深く感謝したい.
     競技システムは,去年の IOI と同様に CMS が用いられた.インターフェースは簡潔で,また JOI 本選や春合宿等でも使用していることもあり,その使い方については選手が自ずと理解できたようであった.

     (5) 翻訳 : 競技日当日の昼間に,日本選手団役員により問題文の翻訳が行われた.
     今年の翻訳システムも従来通り Markdown 形式のもので,すべての編集がサーバー上に保存され,使いやすいものであった.問題文の修正要求と変更連絡は,Keybase というチャットツールを用いて行われ,発言の記録がすべて残るため議論に参加しやすい仕組みだった.

  5. その他・感想など
  6.  今年の IOI はオンライン開催という初の試みであったが,大きなトラブルが発生することなく,大成功に終わったと思う.各国の競技環境の準備にあたった各国スタッフや,オンライン競技システムの作成と運用を担った技術委員をはじめとしたすべての関係者に,深く感謝したい.
     一方,他国選手との交流や大会の雰囲気という面においては,例年と比較して物足りない部分が大きかったように感じる.他国選手との交流はほとんど無かったようであったし,日本選手の中には大会期間中も高校に通っていた人もいたようであった.例年のオンサイト開催という形式の価値を改めて感じさせられた.


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