情報オリンピックの思い出

はじめに

この記事は次の記事にインスパイアされて書かれました。

blue-jam.hatenablog.com

たしかに記憶はどんどん薄くなっていくので自分も今のうちに記録しておくことにします。

情報オリンピックとの出会い

情報オリンピックと出会ったのは高校1年生の夏頃でした。高校向けに配布された情報オリンピックの案内ポスターの存在をクラスの担任に教えてもらったことがきっかけでした。自分が通っていた高校は少し特殊で、いわゆる工業高校と呼ばれるものでした。数学や国語の授業と同じようにC言語を学ぶ授業がありました。C言語に対する理解が他の生徒よりも早かった自分は特に担任に情報オリンピックに参加することを特に推されました。

元々数学オリンピックの存在は知っていたのでとても興味を持ち参加することに決めました。情報オリンピックのサイトに行くとそこには例題としてお釣りの枚数を計算する問題がありました。これを見たとき「情報オリンピック、簡単では??」と思い込んでしまいました。この思い込みとそもそもアルゴリズムやデータ構造という概念を持ち合わせていなかったので、特に勉強せずに予選に参加しました。結果は6問中最初の1問か2問しか解けずに終わりました。

競技プログラミングとの出会い

予選のあとの冬頃に Twitter で「情報オリンピックで優勝するなんて無理だよな〜」的なツイートをしました。このツイートが当時FF外だった @qnighy さんにリツイートされました。何だこの人〜って思いながらツイートを遡ったり周辺の人を観察した結果、情報オリンピック競技プログラミングの大会であることや、蟻本と呼ばれる教材や AOJ/AtCoder などのオンラインジャッジのことを知りました。

そこからは同年代の競プロ勢のツイッターをフォローして、蟻本を購入し AOJ や POJ や AtCoder で問題を解くことを始めました。

自分にとっては蟻本がかなり難しく、授業中に同じページを何度も読み返していたのを覚えています。あと間違えて第二版ではなく第一版を購入したのも思い出です。

2回目の予選

2回目の予選では、競技プログラミング周辺に関する知識も増えていたので予選通過のボーダーラインを把握できていました。当時の予選は1問100点の問題が6問出題されていました。例年350点程度を取ると予選通過して本選に招待されることが知られていました。問題は基本的に難易度順に並んでいて、最初の3問はアルゴリズム的な要素はなく、プログラムを書けると解ける問題で構成されていました。ボーダーとなる4問目は毎年DPに関する問題が出題されていました。

当時の自分はDPという概念は蟻本を読んでいたのでなんとなく知っていたものの、コンテスト本番で解けたことがないジャンルでした。このままだと予選を通過できない絶望感に包まれていました。

しかし、情報オリンピックの予選の直前の AtCoder のコンテストで初めて本番で DP の問題を解くことができました。

これは当時の提出です。予選が12月16日で、このコンテストが12月8日に行われたので本当に直前でした。

atcoder.jp

このことが自信に繋がり、本番の予選でも4問目に出題された DP の問題を無事解くことができました。予選後通過を確信したときはあまりの嬉しさに自転車で近所の図書館に自転車を飛ばして読みたかった本を借りに行くぐらいテンションが上っていました。

本選

当時は見ていたアニメの影響もあって東京への強い憧れがありました。そのため早めに家を出て秋葉原観光をしてから会場に向かっていました。

本戦の対策はいまいちでした。簡単な DP の問題は解けるようになったけどちょっと難しい問題は解けないし、本戦は厳しいだろうなと感じていました。あわよくば本戦でAランクを取って情報オリンピックの推薦枠で大学に進学できれば、とも考えていましたが厳しいことを自覚していました。

本戦の結果は散々なものでした。500点か600点が満点なのに対して10点しか取れませんでした。1問目はちょっと考察すれば貪欲で解ける問題なのに、考察や実験をしないでひたすら実装をいじくり回していた記憶があります。2問目はいいところまで実装はできていて、1行変えれば100点が取れたのに冷静さを失っていてバグに気付くことができませんでした。配布されたCCレモンが美味しくてガブガブ飲んだ結果、トイレに何度も往復しました。

情報オリンピックで得たもの

これまでに情報オリンピックに参加した人がおらず、一般的に見ても頭の良くない高校から情報オリンピックの本戦まで進めたことは一定の自信に繋がりました。それと同時に自分が逆立ちしても解けない問題をスラスラ解いていく同年代の生徒の存在を知り大きな劣等感に包まれたこともありました。

情報オリンピックとの出会いは間違いなく自分の人生を大きく変えた出来事です。プログラミングの基礎能力の向上はもちろん影響がありますが、それよりも競プロ勢との出会いの方が大きな要素だったと思います。競プロ勢とツイッターで繋がり、その先のエンジニアコミュニティに出会い、世間の大きさと自分を比べられるようになったからこそ、向上心が芽生えて今の自分があります。

最後に

エモくなって自分語りが楽しくなりました。情報オリンピックは間違いなく青春の一部でした。ありがとう。