1.はじめに
皆さん初めまして、高校2年生の blackyuki です。8/7〜8/15 にかけて開催された国際情報オリンピック2022インドネシア大会に参加してきたので、その参加記を書こうと思います。
出題された問題にはほとんど触れていないのであまり役には立たないかもしれませんが、競プロについて一切知らない人も理解できるような記事を目指して書いたので、最後まで読んでいただけると幸いです。
2.情報オリンピックとは?
情報オリンピックは、数学オリンピックや物理オリンピックなどの7つの科学オリンピックのうちの1つです。といっても数学や物理と違って、「情報」という単語を聞いてもどのような競技なのか想像しづらいかもしれません。
簡単に言うと、プログラミング力を競う大会です。プログラミングと一言で言ってもいろんな種類があるわけですが、ロボットを作ったりアプリを作ったりするのではなく、アルゴリズムやデータ構造を用いていかに効率的なプログラムが書けるかを競います。イメージとしてはプログラムの力を使って数学の問題を解く、という感じです。効率の悪いプログラムを書いてしまうと、制限時間内にプログラムが答えを導くことができず、点数が低くなってしまいます。
また、他の科学オリンピックにはない特徴として、プログラムを提出するとすぐに自動採点されて点数が返ってくるので、満足のいく点数が得られるまで何度でも提出し直すことができます。
3.国際情報オリンピックとは?
情報オリンピックの世界大会で、各国から代表4人が参加します。今年はインドネシアのジョグジャカルタで開催されました。
競技は2日にかけて行われ、それぞれ5時間で3問の課題を解きます。6問の合計点(600点満点)で、高い方から約30名が金メダル、次の約60名が銀メダル、次の約90名が銅メダルを受賞します。
4.どうすれば国際情報オリンピックの日本代表になれるの?
例年9月〜3月にかけて開催される日本情報オリンピック(JOI)に参加する必要があります。参加資格があるのは高校2年生以下です。9月〜11月に一次予選、12月に二次予選、2月に本選、3月に春合宿があり、春合宿での上位4名が日本代表として国際情報オリンピックに参加できます。
通過目安としては、一次予選はプログラムの簡単な文法を知っているか( if 文や for 文など)、二次予選はBFSやDFS、二分探索などの基礎的なアルゴリズムを使いこなせるか、本選と春合宿は難しい問題が解けるか(雑...)です(あくまで個人の感想です)。
5.参加者紹介!!
JPN1 KoD
昨年も金メダルを受賞していて、とにかく強いです。
イルカのマスコットがかわいい!
全完期待してます!
意気込み「経験を活かして安定した実力を出し、金メダルを獲ります!」
JPN2 yuto1115
犬のマスコットがかわいいです!
意気込みは内緒だそうです。
JPN3 Nachia
代表で唯一の銅冠コーダーで、とても強い方です!
意気込み「グラフ全部倒す(強い意志)」
(補足)銅冠コーダーとは、AtCoder のレーティングが世界で100位以内の人を指します。
JPN4 blackyuki
この記事の筆者です!
IOIで金メダルを獲ることを夢見て、約3年間競技プログラミングを続けてきました。
意気込み「IOIへの参加は今年が初めてですが、せっかく代表に選ばれたので金メダルを獲りたいです!」
6.参加記
Day -14 ~ Day -1
期末考査が終わり、熱烈精進期間に突入します。僕は毎日10時間ずつ過去問を解いていました。
Day -1
明日から待ちに待ったIOIが始まると思うと、緊張してなかなか寝付けません。。。
Day 0
成田国際空港に到着、選手や随行員が集まってきて、いよいよIOIが始まるんだなあという気持ちになってきました。チームTシャツをもらい激励を受け、ついにインドネシアに向けて出発です!
Day1
ジョグジャカルタ空港に到着すると選手がたくさん集まっていて、記念写真を撮ってから、チームガイドと一緒にホテルへ向かいました。移動中は IOI の過去問や問題傾向について話し合いました。日本のチームガイドは galang さんと denzel さんです。
ホテルに到着し、夕食を食べた後は自由時間でした。ここでトラブルが発生してしまいます。部屋のシャワーのお湯が冷たい!赤い方に最大限ひねっても冷水より若干温かいようなお湯しか出ないのです。。。どうやら現地の人は冷水でシャワーを浴びるらしく、多くの部屋で同時にお湯を出すことはあまり想定されてないようです。僕は全てを諦め、現地人になった気分で冷水シャワーを浴びました。
寝る前に4人で部屋に集まってナブラ演算子カードゲームをしました。本来は二人で遊ぶゲームなのですが、4人で遊んだ結果JPN2が集中攻撃を受けて一瞬で0次元になっていて面白かったです(最悪)。
Day2
この日はプラクティスの日です。競技環境に慣れるため、予め配布されていた問題を本番と同じ環境で解きます。僕はIOIへの参加が初めてなので、持ち込んだキーボードがちゃんとつながるかなど色々心配していましたが、特に問題もなく競技に取り組めました。
会場にはマスコットを持ち込むことが許可されていて、海外の人は日本のアニメが好きな人が多いというのを聞いていたので、進撃の巨人と黒子のバスケのフィギュアを持ち込んだところ、海外の選手とかが “It’s so cute!!!” って言ってくれました。うれしい。進撃の巨人は海外でも有名だろうとは思っていましたが、黒子のバスケを知っている人も意外に多く、驚きました。近くの席に rainboy がいたので話しかけて、”Are you rainboy?” “Yeah, I’m rainboy!’ みたいなやりとりをしました。僕ABCの作問やってる人です!って言ったら “Are you blackyuki?” って言ってくれました。
(補足1)多くの競技プログラマーが参加する Codeforces というロシアのコンテストサイトがあり、rainboy というのはアメリカの選手の Codeforces におけるハンドルネームです。競技プログラマーはお互いをハンドルネームで呼び合うことが多いです。
(補足2)ABCというのは AtCoder Beginner Contest の略で、日本のコンテストサイトである AtCoder が開催するコンテストです。僕はこのコンテストの作問に関わっています。
夕食が終わってから日本の選手4人で Game room へ行き、チェスをしたりUNOをしたり卓球をしたりしました。最初4人でチェスをした後、僕は果敢にもイタリアの選手に対戦を申し込みましたがボコボコにされました。。。教訓:イタリア人はチェスが強いです。
その後エジプトの人が話しかけてくれて「おすすめのアニメ教えて!」って言われたのですがあいにく日本の選手は有名なアニメしか知らず、”Attack on Titan?” “Of course I have watched it!” “Haikyuu?” “Of course I have watched it! Anything else??” “...” みたいなやり取りをしてました。せっかくなので僕の部屋まで来てもらって、お土産にと持ってきた進撃の巨人のクリアファイルを一つ渡しました。とても喜んでくれて、明日エジプトのお土産あげるよ!って言ってくれました。教訓2:今後IOIに参加する人はアニメに詳しくなっておいた方が海外選手たちとの話題が増えて楽しいと思います。
Day3
開会式の日です。会場に到着すると、入口付近で民族衣装を着た人が踊ったり楽器演奏などのパフォーマンスをしていました。開会式が始まるとオーケストラ演奏、国歌斉唱、スピーチと続き、だんだん英語の字幕を追うのも疲れてきて聞き流していました。
夕食はアメリカ選手たちと同じテーブルで食べて、JOI 春合宿の問題が難しすぎる話をしたり、解いたUSACOの良問の話をしたりしました。
(補足)各国の代表選考合宿に出題される問題は公開されているものが多く、競技者はIOI対策として他国の代表選考合宿の問題を解いています。USACOはアメリカIOI代表選考のことです。
Day4
この日はいよいよ Contest Day 1 です!
競技は18時に終わり、その後の夕食でも脳死状態だった僕はスープを入れるつもりが自分の手にぶっかけてしまいます。とても熱かったです。意気消沈している僕に団長が順位表を見せてくれました。どうやら僕は28位だそうです。
(補足)選手は競技中に自分の点数を知ることはできますが、競技中に順位表を見れるのは団長団だけです。
正直今まで過去問を解いてきてこのような順位はとったことが無かったですが、まあ落ち込んでも仕方ないので、気持ちを切り替えることにしました。気晴らしにJPN2と game room に行くと、チームガイドの denzel さんが一緒にモールにいかないかと誘ってくれました。せっかくなのでついていくと、フィリピンの選手4人と合流し、皆でドーナツを食べに行きました。フィリピンの選手の一人は日本についての色々な噂を聞いて疑問に思っていたらしく、それが本当かどうかを聞かれました。かれこれ1時間ぐらい話していましたが、店の閉店時間になって追い出されてしまいました。日本情報オリンピック委員会の方から、海外の選手との交流用にと30本ほど頂いたフリクションペン(海外では珍しいらしい?)を一人ずつ渡したところ、とても喜んでくれました。
Day5
この日は待ちに待ったエクスカーションの日です!インドネシア国立芸術大学に行く予定だったんですがここでトラブルが発生してしまいます。僕は昨日の競技の疲れからか寝坊してしまったのです!...というわけで朝食をとれないこととエクスカーションに行けないことが確定してしまったかのように思われたのですが、なんとチームガイドの denzel さんがタクシーを手配してくれた上に朝食も用意してくれました。本当に感謝しかないです。
遅れてインドネシア国立芸術大学に到着すると、人々が楽しそうに踊っていました。どうやら現地のプロの人に民族舞踊を教わっているようです。JPN1とJPN2を見つけて合流し、一緒に踊りました。楽しかったです。
昼食を食べていると、隣のテーブルにカナダの人たちが座っていたので、duality に握手をしてもらいました。IOIへの参加が何回目かを聞くと、5回目と言ってました。プロです。
ホテルに戻ると、僕が大好きな曲である unravel を誰かがピアノで弾いているのが聞こえてきました。近くに行ってみると、曲を弾いているのはオーストリアの人でした。東京喰種を知っているのかと聞くと、アニメとかは見ないけど曲は知ってる、めっちゃいい曲だよねって言ってました。
昨日一緒にドーナツを食べたフィリピンの人たちがやってきて、昨日くれたお土産のお返しにとフィリピンの硬貨をくれました。そして、チームガイドの galang さんが KitKat をくれました。パッケージには Gold と書いてあって、”We’ll give you a real gold medal tomorrow” と言ってくれました。
Day6
この日はいよいよ Contest Day2 です!この日の競技の結果でメダルの色が決まってしまいます。
この日も特に不備もなく競技が終了し、団長団と合流して順位表を確認すると、なんと日本の選手全員が金メダル圏内でした。選手全員が金メダルを受賞することは、日本にとっては今までで初めてで、今年は日本と中国だけでした。歴史的快挙に立ち会ってしまったなあと感じました。
夕食は近くのモールの丸亀製麺に行きました。インドネシアの人はとにかく辛いものが好きだそうで、トッピングにはネギに加えて唐辛子が入ってました。唐辛子だと気づかずに危うくうどんにかけてしまうところでした。怖いですね。
この日はすべてのストレスと緊張から解放されてよく寝れました。
Day7
この日はエクスカーションの日で、有名な世界遺産であるボロブドゥールにいきました。バスが出発したときは晴れていたのですが、途中から地面に叩きつけるような雨が降ってきて、びしょ濡れになりました。3人で記念写真を撮ってから、そのまま夕食会場に向かいました。夕食会場からはライトアップされたボロブドゥール遺跡が見えていて、とてもかっこよかったです。夕食を食べていると、いつの間にか夕食会場はライブコンサートに変わっていて、海外の選手たちはみんな曲に合わせて踊ってました。最終的にはなぜか僕とJPN2も前の壇上で踊ってました。明日でこの楽しかったIOIも終わってしまうのか...という悲しい気持ちになってしまいました。
ホテルに着いてからエレベーターで Timothy Feng に会ったので、Day2満点おめでとう!と言うと、”Congrats to Japan for getting 4 golds‼” と言ってくれました。
Day8
この日は閉会式の日です。朝起きると9時を過ぎていて、朝食抜きが確定してしまいました。昼食はチームガイドの denzel さんが近くのモールで吉野家を買ってきてくれました。おいしかったです。閉会式の会場の Prambanan Temple に到着すると、いろんな人が “Congratulations Japan!” と言ってくれました。毎年恒例のIOI人文字の写真を撮ったあと閉会式の席に移動すると、メダルの色ごとに席が分かれていて、僕の席の周りは金メダリストばかりでした。閉会式が始まると、プロジェクションマッピングを用いたかっこいいダンスパフォーマンスが見れました。東京オリンピックの「この赤い糸は人類の絆を表しています。」みたいなあれです。その後は祝辞が続き、いよいよメダリストの発表です!
ステージでメダルの授与が行われます。銅メダリストから順に名前が呼ばれ、銀メダリスト、そして金メダリストの番になりました。これまでにないほどの拍手喝采が起き、自分の名前が呼ばれる頃になると急に色々な感情がこみ上げてきて、今までの努力が報われて良かったという安堵と、IOIで金メダルを獲るという以前からの目標を成し遂げたことの達成感(僕はこの日のために今まで競技プログラミングをやってきたと言っても過言ではありません)、そしてここまで諦めずに挑戦してきた自分を褒めたいという気持ちなどが同時に起こり、泣きそうになってしまいました。メダル授与式が終わると、来年の開催国であるハンガリーへの引継ぎ式のようなものが行われ、最後に盛大に花火が打ち上げられ、閉会式が終わってしまいました。
ホテルに帰ると、金メダル受賞者全員にスポンサーから腕時計とノートパソコンが渡されました。副賞があるとは思っていなかったのでとても嬉しかったです。
寝る前に、この日のために親から借りて持ってきたソニーのワイヤレスイヤホンで、この日のために聞くのを我慢していた曲たちを大音量で聞きました。達成感に包まれてとても幸せな気持ちになりました。ずとまよはいつ聞いても最高ですね。ヒステリックナイトガールもとても好きです。ヒバナもとても好きです。(好きな曲の話をしだすと止まらなくなるのでこの辺りでやめておきます...)
Day9
この日でホテルとお別れです。最後にチームガイドさんの denzel さんがインドネシアのお土産として大量のキーホルダーをくれました。僕はお返しに家から持ってきた日本茶を3袋渡したところ、とても喜んでくれました。もうインドネシアともお別れですね。悲しいです。
Day10
7.終わりに
まず、IOIへの現地参加というとても貴重な体験ができたことについて、本当に幸運だと思っています。コロナ禍という厳しい状況下で現地開催のために尽力してくださった、大会関係者やJCIOIの方々を始めとする全ての方々にこの場を借りて感謝を申し上げたいです。現地開催だからこその気づき、学び、交流が大いにありました。次に、現地で私たち選手を色々な面でサポートしてくださった、団長団の方々にも感謝を申し上げたいです。ご迷惑をおかけした部分もあったかと思いますが、団長団のサポートのおかげでIOIを最大限満喫することができました。そしてこれまで僕を応援してくれた家族や友達にもとても感謝しています。彼らの応援がなければ、僕は決してこの場所にたどり着くことはできませんでした。僕は昔から気が弱くて、何度も挫けそうになったことがありましたが、友達からの何気ない言葉に勇気づけられたりしてました。本当にありがとうございました。
今回のIOIで金メダルという栄誉ある賞をいただけたことを嬉しく思います。更に日本代表全員が金メダルを受賞するのは初めてということで、とても光栄です。競技では思うように点数が伸びず悔しかった部分もありましたが、今僕の中にあるのは金メダルを受賞できたことへの安堵と達成感のみです。また、これからは多方面の分野に手を伸ばしていきたいと考えています。情報オリンピックへの参加は僕にとって、科学に興味を持つ大きなきっかけとなりました。
最後に、IOI参加を目指す後輩たちへ伝えたいことがあります。世界中の選手300名以上が集まる会場で、普段通りのパフォーマンスを発揮することは簡単なことではありません。実際に僕も会場の雰囲気に飲み込まれそうになりました。ですが、競技に取り組む上で最も重要なことは、全力で楽しむことと自分に自信を持つことです。このアドバイスが少しでも役に立てば幸いです。
最後まで読んでいただきありがとうございました!!!