2011-12-22
__________の ICPCアジア地区予選2011参戦記 No.1/3
福岡大会 1日目
生きることは、勝ち続けること。
それは、あたし――
「うわぁ! ねえ見てサクヤちゃん、博多名物“おきゅうと”だって!」
ショートボブのくせっ毛がふりふり揺れて、底抜けに明るい声が飛んでくる。
「すごいよねえ、さすが福岡だねえ。……あれ、でも“おきゅうと”って何だろ? 民間療法?」
いつものように頭の悪いその発言に、あたしは呆れながらも答えを返す。
「それはお
「おおー! さすがサクペディアちゃん! 博識だねえ!」
「誰がオンライン百科事典よ、誰が」
何も考えていないように見えて、事実何も考えてないこの女の子――
「あうっ!」
「馬鹿なこと言ってないで、行くわよ。あたしたちが何のために博多まで来たのか、忘れたの?」
「うぅ……。ごめんねぇ、サクヤちゃん……」
タマキは、少し涙目になって、潤んだ瞳でこちらを上目づかいに見つめてくる。
おいこら、なんでこの程度で泣くんだよ。
「……ったく。初めて九州に来てはしゃぎたくなる気持ちは分かるけど、羽目を外すのは全てが終わってからにしなさいよね。もし何かあったら取り返しがつかないでしょ。……とくに、その、あんたの身に」
「! サクヤちゃん……!」
途端にぱあっと顔を輝かせるタマキ。えへーと笑いながら、にやけた顔であたしの服の裾をつまんでくる。
「んふーふーん♪ ふふんふふーん♪」
「…………」
今度は鼻歌まで歌いだした。よほど上機嫌なのか、軽くスキップまでしている。
放っておけばどこまでもついて来そうな小柄なタマキの姿を見て、あたしは――――犬みたいだなぁ、と思った。
「さっくやちゃん♪ 大好きさっくやちゃーん♪」
「ごめん。やっぱ鬱陶しいわ」
ぺちん。あうっ。
おでこを抑えてうずくまる、悩みなんて欠片もなさそうなタマキに冷たい視線を向けながら、あたしは再びため息をついた。
はぁ。せめて、“もう一人”の方も、タマキと同じくらい扱いやすければねぇ。
「タマキは相変わらず現状認識が甘い。なぜなら、ここはもう戦場なのだから」
――そう、思ったそばから。
「浮ついた態度でいれば、いつか必ずしっぺ返しをくらうことになる。常に神経を研ぎ澄ませ、持てる集中力を総動員して、周囲に細心の注意を払うべき」
背後から聞こえてきた声に、あたしはこめかみを抑えながら振り返る。
そこに居たのは――まあ予想通りなんだけど――ぴりりとした雰囲気を身に纏った黒髪の少女、
「私達は、何のためにここまで来たのか。その当初の目的を、優先順位を、決して間違えてはいけない。見知らぬ土地で道を見失えば、待っているのは破滅のみ」
「……で? 大層な御託を並べているあんたがその両手に抱えている物は、一体何かしら?」
トウコは、大量に抱えた紙袋の中から“ソレ”を一つ取り出すと、袋を破ってひょいと口に放り込んだ。
「福岡名物、“博多通りもん”。超うまい。いちおし」
「あんたが一番羽目を外してんでしょうがあっ!」
昔、空手で鍛えた上段回し蹴りを、相手のこめかみ狙いで思いっきり叩きこむ。
あたしの蹴りが直撃する瞬間、トウコの身体が少しだけ沈みこんだ。
「ちいっ! 外したか!」
技が眼前に迫っても眉一つ動かさず、必要最小限の動きだけでかわされた、だと……。
しかも、大量の紙袋(おそらく全部食料品)を抱えたまま。くそ、腹立つ……!
「私は誰よりも真剣。この博多駅に立ち並ぶ数多の土産店の中から、何処を選び、何を買い、何時食べるか。その繊細な判断は、常に冷静でなくてはとても務まらない」
言いながら、また1つ、通りもんの袋を破って口に入れる。
無表情な顔で、口だけをむぐむぐ動かしながら、トウコは続けた。
「現に、サクヤとタマキは、つい先ほど大きなミスを1つ犯している。危なかった。もし私が指摘していなければ、取り返しのつかないことになる所だった」
「は? 何よ、あたしのミスって」
自慢じゃないが、あたしがこういう旅行なんかを仕切ってミスをしたことは一度もない。
完璧主義者を名乗るつもりはないが、根が几帳面なのだ。
忘れ物や、財布を落とすなんてイージーミスは絶対にやらない自信がある。もちろん、そういうことをやらかしそうなタマキの財布をあらかじめ預かっておくことも忘れていない。
トウコは、あたしの言葉を聞いているのかいないのか、とある売店――さっきタマキが騒いでいた店だ――に向かって、すたすたと歩いていく。
「少しでも興味を持ったら、即買い。これは基本中の基本。……店員さん、おきゅうと3つ下さい」
「心っ底どうでもいいわっ!」
全速ダッシュからの
ていうか、なんで振り返りもせずに背後からの攻撃をかわせるのよ……っ!
「タマキ。少しでも興味を持った商品を買わないのは、作り手に失礼」
唖然とするタマキの手の中に、おきゅうとの入った袋が1つ。
「サクヤ。伝聞知識だけで地元名物の何たるかを語るのは、食べ物に失礼」
いまだ憤然とするあたしにも、おきゅうとが1つ。
「全身全霊で、作り手と食材に感謝を込めて」
どこからか紙皿と割り箸を取り出したトウコは、自分の分のおきゅうとを皿の上に置き、これまた何処かから出したポン酢をかけて、ぱくり。
「ってえ! 今食うんかい!」
「……予想よりうまい。これは、あと3つ追加購入も辞さない」
辞さないじゃねえよ。あと、そもそも土産品は現地で食うもんじゃねえよ。
◆
渡部タマキ。
体型は小柄。髪型はくせっ毛のある栗色のショートボブで、いつもつけているダイス型のボンボンがよく似合っている。顔はくりくりっとした丸い目が特徴的で、小動物系とでも言うのか、まあ可愛いと言えないこともない。
性格は、とにかく真っ直ぐ。感情表現が素直だと言えば聞こえはいいが、思ったことがすぐ顔に出る裏表のないタマキの姿を見ていると、この子将来絶対詐欺とかにあいそうだよなぁ、と思う。しかも本人が騙されたことに気づかないから何度でも騙されるタイプ。
吉田トウコ。
タマキとは逆に、滅多に無表情を崩さないため、何を考えているのか判然としない。目はとろんと半開きだが、以前本人から聞いたところによると、別に眠いわけではないらしい。
食べ物全般にかける熱意は、ぶっちゃけあたしが軽く引くレベル。いつ見ても何かしら食べてる。なのにスタイルは悪くない。正直むかつく。
タマキが空気を読めない子なら、トウコは絶望的なまでに空気を読まない。以前、男子に「トウコちゃんは天然だなあ」なんて言われているのを目撃したことがあるけど、あたしに言わせりゃ、トウコのあれは確信犯だ。絶対分かったうえでやってやがる。
誠に遺憾ながら、この2人の馬鹿こそが、あたし、秋葉サクヤをリーダーとする競技プログラミングのチーム、【__________】の、構成メンバーだったりするのである。
「……それで? あたしたちが東京からわざわざ博多くんだりまでやってきた目的は?」
おずおずと挙がる手が、1つ。
「はい、タマキ」
「ええと……。わたしたち3人は、ICPCの国内予選を突破したから、次のアジア地区予選に出るために、今年の開催地である福岡に……」
「はいOK。じゃあ次。あたしたちのチームの、この福岡大会での目標は?」
しゅぴっと挙がる手が、1つ。
「はい、トウコ。あと人の質問に答えるときくらいはいい加減通りもんを食うのを止めろ」
「んぐ。ラジャー。この大会に是が非でも優勝して、
「はいOK。よく出来ました」
言うと、あたしはゆっくりと息を吐きながら、2人を見回す。
そして、たっぷりと言葉をためてから、叫んだ。
「だったらなんで、あたしたち【__________】は、初っ端から
ちなみに今現在、あたし以外の2人、タマキとトウコの姿勢はといえば、正座である。
コンクリートの床に、ガチ正座。そんな2人を、あたしが冷ややかな視線で上から見下ろしている。
他のチームが本番環境のチェックを行っている中で、集合時間に遅れたあたしたち【__________】だけが、会場の廊下に締め出し。セキュリティチェックの都合上、いかなる理由があろうとも途中入場は不可能らしい。
何が悪かったのかといえば、これはもう、100%あたし以外の2人が悪い。
お昼になって、(あれだけ土産品を食べていたはずの!)トウコが「お腹すいた」と発言。その提案を受けて、あたしたちは近くにあった博多ラーメン店へと入った。
そこでトウコが迷わず【30分以内に全部食べたらタダ! ウルトラ特盛ジャンボラーメン!】を注文。慌てて止めようとするも時すでに遅し。10人前はあるんじゃないかっていう巨大なラーメンの山が、トウコの前に運ばれてきた。
で、その巨山ラーメンを、トウコはなんとわずか5分足らずで速攻完食。その上、あろうことか替え玉の注文まで始めやがった。
「30分以内に食べたものが全てタダになるのなら、私はここで倍プッシュ」などと意味不明なことをぬかしながら、残り25分フルに使って合計30杯の替え玉を完食。ジャンボラーメン(2800円)+替え玉(100円)×30=5800円分の食費を浮かせやがった。
店を出るときにちらりと見えた、店員さんの苦々しい表情を、あたしは一生忘れないだろう。
加えて、ただでさえトウコがフードファイトしていたせいで時間がおしてるっていうのに、博多駅中央街を歩いている途中で突然タマキが「ねえねえサクヤちゃんサクヤちゃん! あそこに東急ハンズがあるんだけど行ってもいいかな行ってもいいよねせっかく博多まで来たんだもんねもしも博多店でしか買えないゲームがあったりなんかしたら行かないと一生後悔するもんねそれじゃ行ってくるから後よろしく!!」などと(タマキは数理パズルだのボードゲームだのに目がない)一瞬でまくしたてるやいなや目にも止まらぬ速さで走っていってしまったため、さしものあたしも止める暇がなかった。
慌てて追いかけるも、店内を爆速で動き回るタマキを捕獲するのにかなりの時間を要し、結局「セブンワンダーズを2つ買ったら14人で遊べるようになったりしないかなあ〜」などと博多店一切関係ない戯言をほざいて商品棚を眺めていたタマキを強制的に引きずって退店させたころには、これまた30分以上が経過してしまっていた。
いくら入念な下調べを欠かさず、時間に十分な余裕を持って行動するのがモットーのあたしと言えども、ここまでの
めでたく、あたしたちのチームは集合時間に5分遅刻し(それでも! それでも5分遅れに抑えたのだ! あたしは!)、今こうして、廊下に締め出しをくらっている次第である。
「……で、2人とも、何かあたしに言うことは?」
ゴミを見るような絶対零度の視線を向けるあたしに、タマキは耐え切れなくなったのか、土下座して詫びる。
「ごめんなさぁいサクヤちゃん! ハンズがわたしを呼んでいたから、つい……つい、我慢できなくて! うわあああああん!」
うむ。まあ、いつまでも怒っていても仕方ないし、反省してるなら許してやるか。
あと、無生物の声が聞こえるとか、アニメの中以外で言ったらただのイタい子だからな?
「で、トウコも何か言うことは?」
「ラーメン10人前を5分で食べられたのなら、理論上25分で替え玉50杯は行けたはず。……無念。私もまだ未熟」
「ようしてめぇだけは一発殴らせろ歯ぁ喰いしばれ!」
反省するポイントはそこじゃねぇよ!
「おや。また何やらお馬鹿なことをしている3人組がいるようだな」
平坦だが通りのよい、涼しい声が響いた。
「……ちっ。お前か」
真っ直ぐ伸びる赤みがかった茶髪。整った顔立ちながら、その両目には、生半可な人間なら一睨みで萎縮させてしまえるであろう力強さが潜んでいる。
「はは。お前とはまた冷淡だな。偉大な
「あたしに何か用。
精一杯のうざったさを込めて言ってやるが、この女――
「別に用向きがなければ話しかけてはいけないなどということはあるまい。ただの情報収集の一環とでも思ってくれたまえ」
「前回大会の優勝者サマが、あたしたちから有用な情報を得られるとはとても思えませんけど」
そう。緋笠カズミの率いるチーム、
周囲に超人的な実力を見せつけ、大差で1位の座を奪い取っていった、緋笠カズミと玉兎。
無論、あたしたち3人も、その闘いで無残に敗れ去ったチームの1つだ。
そのときの、あたしたちの最終順位は、2位。でも、1位の玉兎との差は、歴然としていた。
ラスト10分で重量級の構文解析問題を通さなければ負けという絶望的な状況にまで追い詰められて、そのまま成す術なく敗北。カズミさえいなければなんて、言い訳にもなりやしない。
加えて、その闘いで、あたしたちのチームは、“名前”を、失った。
「私としても、優勝するのは自分のチーム以外にありえないなどと傲慢なことを考えているわけではないのだよ。そして、もしも我ら玉兎を上回るチームが現れるとしたら、その最有力候補は君達、【__________】だろうとも思っている」
「あたしらを“名無し”にした本人が、よくもぬけぬけと」
「おや。しかし正統な勝負をして負けたのは君達だろう?」
「……ちっ」
去年のICPC。あたしたちとカズミは、チームの“名前”を賭けて闘った。
この賭けを提案したのはカズミの方だ。もちろん、そんな賭けを馬鹿正直に受けてやるメリットなんて何もありやしない。だが、あろうことかカズミは、
なかば強制的に執行された賭けゲームの結果は、ご存じの通り。
あたしたちのチームは、今まで慣れ親しんだ名前を失い、【
これ以上ないってくらいの、屈辱と共に。
「ああ。もちろんこの大会で君達が私達を制した暁には、きちんと名前を返してあげるとも。安心もらって構わないよ」
「ふん。当たり前でしょ。あたしたちが何のために闘ってきたと思ってんのよ」
カズミは、あり得ないくらいむかつく女で、あたしとは天地がひっくり返っても決して相容れない自信があるけれど、勝負に関してだけは公平な奴だ。約束はきっちり守るだろう。
だとすれば、あたしのやることは簡単だ。ただ、目の前のこいつを完膚無きまでに叩き潰せばいい。
いけすかない女の鼻っ柱を、へし折ってやるわ。
「ねえ見てヒロト。
なんて、カズミといがみ合っている間に、また一人。
――いや、一人というべきか、二人というべきか。
「ああ、
「用がなければ」「話しかけちゃいけないの?」
「はは。それはもっともだ。君達、
「うん。だってボクたちは最強で」「そして最速だからね」
「おやおや。頼もしいことだ。今年もいい勝負ができることを期待しているよ」
「カズミお姉さんもね」「でも、今年はボクらが優勝だよ」
今カズミと話しているこいつらは、
双子というだけあって、顔も声も服装も、何から何までそっくりで、この2人を見た目で区別するのは不可能に近い。
「うん、今年のボクたちは誰にも負けない。もちろん」「サクヤお姉さんにだってね」
「何それ。あたしを煽ってるつもり?」
「ふふっ」「それはどうかな?」
ったく。安っぽい挑発だこと。
こんなガキっぽい奴等の言葉に惑わされてペースを乱す奴がいるなら、この目で見てみたいわ。
「むー! 負けないもん! 優勝するのは、わたしとサクヤちゃんとトウコちゃんのチームなんだから!」
――前言撤回。同レベルのガキには効果覿面でした。
「あれれ? タマキさんとトウコさん」「どうして床に正座してるの?」
「あー……。これはまあ、何というか、ちょっと一言では言えないような深い理由があってね……」
「はしゃぎすぎて
「一言で言うなっ!」
この……! トウコの奴、チームの恥部を堂々と……っ!
「ふうん。それは可哀想だね」「レモン飴いる?」
「いただく」
「もらうなっ!」
なんかもう台無しだよ! プライドとか色んなものがな!
「その代わりと言ってはなんだけど」「この大会中、ボクたちのチームに協力してくれない?」
「む……。しかし、それは……」
「レモン飴」「5袋追加で」
「裏切りも辞さない」
「500円程度の菓子で買収されてんじゃねぇ!」
というかこの双子、なんでトウコの扱いを熟知してるんだよ!
「だったら私からもいいかな。東京に帰ったら、今度、満漢全席のフルコースを御馳走しようじゃないか。もちろん料金は私持ちで」
「カズミ様。一生ついていきます」
「てめぇは小学校の道徳の時間からやり直せーっ!」
他人から物をもらってもついて行ってはいけませんって習っただろうが!
「あらあら。みんな、同じ日本代表チームの候補なんだから、仲良くしなくちゃダメよぉ」
甘ったるい声が、ふんわりとこの場に響き渡った。
「おや。貴方は」
「
「はぁ。また面倒な奴が一人」
「む? お姉さんに向かってそんな口のきき方は良くないぞ? サクヤちゃん、めっ」
「……はいはい。すみませんでした」
チーム【
ゴージャスな金髪を縦ロールに巻いた、典型的なお嬢様スタイルながら、キツい所は一切ない。むしろ、過剰なまでに人当たりが良い。
タマキとは別の意味でふわふわしたお方で、あまり人間界の常識に頓着していないご様子。一人称はまさかの「お姉さん」。
そんな良く言えば天然、悪く言えば非常識なお嬢様ではあるが、彼女が現れた瞬間、場の雰囲気が一変したのは誰もが認める所だろう。
なぜなら彼女こそが、日本の競技プログラミング界の頂点に立つ、いや、世界中で最も優れた競技プログラマーとして名高い、絵空トオルその人なのだから。
「光栄ですね。貴方ほどの人物が、わざわざアジア地区予選に足を運んでくださるなんて」
「だってぇ。みんなが頑張っているのなら、それを間近で見ていたいじゃない?」
緋笠カズミが“超人”ならば、絵空トオルの強さは“人外”。
世界全土を見渡しても彼女に比肩する人間はいないほどの逸材。望めば
その理由は、彼女ならまあ、一つしかないんだろうなぁ……。
「トオルお姉さん……!」「お姉さんは、今日の大会……!」
「ん? ああ、安心していいわよぉ。みんなの邪魔なんてしないわ。お姉さんは、今日のコンテストで、1問たりともAcceptを出すつもりはないから」
「!」「!」
……これだ。
この人は、強者の余裕なのか何なのか、自分が大会で勝利することに一切関心を持っていない。
彼女が大会に参加する理由は、最も間近でみんなの姿を見ていられるから。
彼女は、ただ他の競技プログラマーが頑張っている姿を眺めていればそれだけで満足だという、筋金入りの変態さんなのだ。
「貴方と本気で競い合いたいという気持ちも、なくはないのですがね」
「ふふ。それは止めておいた方がいいわよぉ。お姉さんの圧勝すぎて面白くないから」
自慢でも挑発でもなく、これをナチュラルに言えるお人なのである。察して欲しい。
格上の相手への挑戦が大好きなあたしでも、正直、トオルに勝てるビジョンが一切見えない。彼女だけは、別格、なのだ。
「……行くよ、ヒトロ」「行こう、ナオト」
「双子ちゃんも、明日は頑張ってねぇ〜」
ひらひらと無邪気に手を振りながら、去っていく高橋兄弟を見送るトオル。
酔狂ここに極まれり、といった感じだが、おそらく彼女は、本気で全員のことを応援しているだけで、一切の他意はないのだろう。
「さ、あたしたちもそろそろ行くわよ。プラクティスに出られなかった分、今日は早く寝て、体調だけでも万全にしとかなきゃね」
「了解だよサクヤちゃん!」
「ラジャー。ところで晩御飯はどこで」
「うるさい黙れ!」
立ち去るあたしたちと、不敵に笑う緋笠カズミの視線が、重なる。
――それでは、また明日。去年と同じ、つまらない結末にならないことを祈っているよ。
――心配してくれなくても結構。あんたは、二度と立ち直れないほどに負かしてやるわ。
交差は一瞬。それでも、伝えたいことを伝えるには十分だった。
そして、決戦の日が、訪れる。
福岡大会 2日目
「うわぁ……。人がいっぱいだねぇ、サクヤちゃん!」
「あんた、これでアジア地区予選に出るの何度目よ……」
体育館1つ分くらいの広さはあるコンテスト会場に、とうとうあたしたちはやってきた。
「さ、2人とも。
全国各地で行われた国内予選を突破し、このアジア地区予選に駒を進めた日本のチームは、全部で28チーム。その中には、この業界では少なからず名の知られた競技プログラマーの姿もちらほら見うけられる。
とはいえ、そのほとんどの実力は、正直言ってあたし1人の足元にも及ばない。
油断でも慢心でもなく、あたしたちとの優勝争いに絡んでこられるレベルの強豪チームは、数えるほどしかいないと見ていいだろう。
無論、最優先で警戒すべき相手は、チーム【玉兎】――緋笠カズミだ。彼女のプログラミングスキルは、(トオルを除けば)全参加者の中でも群を抜いている。
去年のようにカズミに負けることがあれば、たとえ2位だろうと何だろうと、その瞬間に
「……だったら、何とかしてやろうじゃないの。必ずね」
チームの名前も、優勝の栄冠も、全部まとめて取り戻す。
そんなことを呟きつつ、周囲を見回す。
すると、近くの机(カンニング防止のため、隣の机でも数メートルは離れている)に、見知った顔がいるのを見つけた。
「あれ? あんたたち、チーム【
あたしたちの後ろ斜め後方の机に座ってパソコンをいじっている、大人しそうな女の子3人。
彼女たちのチーム、【
「あ……。サクヤ先輩。お久しぶりです」
「よっ、カエ。“先輩”はいらないって、いつも言ってるでしょ」
「す、すみません。けど、サクヤ先輩には色々と恩がありますので……」
2年前のICPC国内予選。競技プログラミング初心者で、右も左も分からず困っていた彼女たちに偶然出会ったあたしたちが、参加登録やら何やら色々と手を焼いてあげたのが、チーム若葉との出会いだった。
そんなことがあって以来、若葉の子たちは、あたしたちのことを先輩と呼んで慕ってくれている。
過去のICPCの成績はまあ中の下程度で、3人とも今日に至るまでいまだに
少なくとも、あの性格がねじ曲がったカズミの野郎なんかよりも、100倍マシだ。
「ま、いっか。つもる話は後にしましょ。今は目の前の勝負に全力を尽くさないとね」
「はい! 先輩たちの胸を借りるつもりで頑張ります!」
「リラックスリラックス。そんなに緊張してると、解ける問題も解けないわよ」
そんなことを言いながら、カエの肩を叩く。
さて……と。あたしもここらで気合い入れないとね。
ノーネームの机に戻ってみると、そこには溢れんばかりのお菓子の山が。
「……トウコ。これは何?」
「お菓子。山盛り」
「うん、知ってる。どこから持ってきた?」
ずびしぃ! と部屋後方を示すトウコの指。
そこには、ICPC参加者がコンテスト中に食べるために、スタッフが用意したお菓子入りの大きな箱が……無い。
「もしかして、箱ごと全部?」
「うん」
「持ってきた?」
「いえす」
「返してこい」
「でも」
「何だ?」
「私がここで全てのお菓子を食べ尽くせば、他の参加者は飢えて競技に集中できない。大勝利」
「か・え・し・て・こ・い!!」
◆
箱全体を参加チーム数で割ったくらいの量のお菓子を残し、他すべてを元あった場所に戻して帰ってきたトウコは、露骨にがっかりした顔をしていた。
「……サクヤの、いけず」
「うっさい喋るな食欲馬鹿」
あたしは、淡々とパソコン周りのセットアップを進める。
それと同時に、必要な道具をリュックから取り出して机の上に整然と並べていく。
計算用紙、筆記用具、英和辞書、主要なアルゴリズムと定番のコードを網羅した紙ライブラリ。
方眼用紙は、通常のものだけでなく、正六角形を敷き詰めたバージョンもきちんと用意。
とにかく多種多様なダイスが詰め込まれたタッパー(タマキの趣味)、片手に収まるサイズの小型折り紙100枚セット(タマキの趣味)、それと、残ったお菓子……の空き袋(既にトウコが全部食った)。
準備は万端。あとは勝つべくして勝つのみ。
静かに闘志を燃やしつつ、深呼吸。
……よし。コンディションはバッチリだ。改めて、周囲の気になるチームを見回す。
にこにこと笑みを絶やさない、チーム【世界一】、絵空トオル。
相変わらず手を繋いで2人べったりの、チーム【ブレインネクサス】、高橋ナオト&ヒロト。
自然体ながらも隠せない威圧感を放っている、チーム【玉兎】、緋笠カズミ。
今日、あたしたちは、この戦場で、頂点に立つ。
「全力で行くわよ! タマキ! トウコ!」
慣れ親しんだ意識が、身体の奥底に沈みこむ。
日常モードから、非日常の闘いへ。
コンテスト用に最適化された感覚。心地よい緊張感が、あたしの身体の中を満たしていく。
生きることは、勝ち続けること。
さあ、始めよう。
この1年間、ずっと死んでいたあたしが、再び蘇るための闘いを。
「The Contest is Start!!!」
審判のアナウンスと共に、これから5時間にも及ぶ長い闘いの幕が切って落とされた。
問題文
0:00経過 【__________ 】 0/10完
ICPCのアジア地区予選では、5時間で10問の問題を解き、その成績をチームごとに競い合う。
ルールは単純で、完答した問題数――完数が多いほど、順位が高くなる。
また、問題を解くたびに、それまでに経過した時間がペナルティタイムとして分単位で加算されていき、同じ完数のチーム同士であれば、このペナルティタイムが少ない方が高順位となる。
加えて、ペナルティタイムが加算されるときには、その問題に間違った回答を送信した回数×20分のペナルティタイムが上乗せされる。
つまり。
より早く、より正確に、より多くの問題を解く。
やるべきことは、皆同じ。たったそれだけの、シンプルな目的。
にも関わらず、それがプログラミングコンテストである以上、そこには様々な戦略が生まれうる。
「タマキはA問題、トウコはB問題! 任せたわよ!」
「了解だよっ!」「がってん」
ICPCでは、3人1組のチームが、協力して問題を解く。
とはいえ、メンバーが3人いたとしても、1人のときの3倍の問題数が解けるようにはならない。
2倍にするのも絶望的だ。下手をすると、1人でやるのと何ら効率が変わらないなんてことにもなりかねない。
その最大の原因は、競技中、各チームごとにパソコンが1台しか与えられないことにある。
コーディングを始めとして、テスト、デバッグ、そしてサブミットと、何をするにしても必要不可欠な計算機が、たったの1台。
いくらチームに3人いようと、並列に動けないのなら宝の持ち腐れだ。パソコンの台数という厄介な制約のせいで、チーム全体としての効率が大きく制限される。
1+1+1は、決して3にはならない。
だからせめて、あたしたちは、その計算結果が1.5くらいにはなるように最善を尽くす。
「A解けた! それじゃ、パソコン借りるねっ!」
「ラジャー。サクヤは?」
「そうね……。この"FUKUOKAYAMAGUCHI"って文字列とサンプル入出力から察するに、おそらくFはただのShortest Superstring。これなら、わりとすぐに書ける」
「把握。私は引き続き、Bのコードの構想を固める」
3人のメンバーによる、完全分業体制。
これが、長らく闘いを積み重ねていく中で確立された、あたしたちの闘い方だ。
普通、こういったチーム戦では、ペアプログラミングと呼ばれる手法が好んでとられる。
1人がコードを書き、もう1人がミスを指摘する。2人のプログラマが、1台のパソコンを使って開発を進めていく、ペアプログラミング。
ペナルティタイムの加算のされ方を考えると、ICPCでは、序盤に簡単な問題をスピーディーかつ正確に通すことが重要だ。だから、コーディングとデバッグを同時に行えるペアプログラミングとの相性がいい、と言われている。
しかしそれは、コーダーの書いたコードにバグがあることを前提とした考え方だ。
もしもコーダーが1つのバグも出さずに最後までコードを書きあげれば、その間ずっと画面を注視していた2人目がやっていたことは、完全な徒労になる。
加えて、リアルタイムデバッグのために、コーダーの実装方針をわざわざ口に出して2人目に伝える手間なんかを考えると、1人のときよりコーディング速度は落ちてしまうのは必然だ。
だからこそ、1人1人が責任を持って、自分が担当した問題のコードを最初から最後まで書きあげる。
もちろん、助けを請われれば協力はするが、基本的には各自の裁量に任せてノータッチ。
そしていざ自分にパソコンが与えられたら、極力手を止めずに最後まで走り抜く。
多少のリスクは覚悟してでも、常時最大のパフォーマンスを発揮し続ける。
そのくらいのことができなければ、カズミに勝って優勝するなんて、夢のまた夢だ。
「よぉしっ! A組めた! サンプルも通った! 行っくよー! サブミット!」
さあ、ファーストサブミットの結果は。
「やったぁ!
「タマキ偉い。次は私の番」
問題に正解したことを示す風船が、ノーネームの机の上にあがる。A問題の風船の色は、赤だ。
それを確認するとすぐに、トウコがタマキと入れ替わり、B問題のコーディングを始める。
頭の中で実装方針を固めていたおかげで、タイピング中に不必要に手が止まることは少ない。
(よし。出だしは好調……ね)
完全分業体制は、個々のメンバーがある程度高い実力を持っていて初めて成立する戦術だ。たとえ1人に問題を任せたところで、その1問を解くのに2時間も3時間もかかっていては話にならない。それならまだ、皆で相談しながら方針を固めていった方がマシというものだ。
解法の考案、コーディング、万が一バグを出したときの速やかなフォロー。
そういった、問題を解くうえでのあらゆるステップを、全員が独力であるレベル以上に行えること。それが、分業を行ううえでの最低条件だ。
……うちのチームの、普段馬鹿ばっかりやってる2人も、そういう点に関しては、まあ、少しは信頼してやっても、いい。
だからこそ、腐れ縁が切れることなく今までやってこれたわけだし。
「それじゃ、わたしは、次に解けそうな問題探してるねー」
A問題を解き終えたタマキは、まだ誰も手をつけていない残りの問題文を読み始める。
ICPCのアジア地区予選は、国内予選までとは違って、問題文が英語で与えられる。
題意に曖昧な点が生じないよう、かなり冗長に書かれた英文を読み解く作業には、思った以上に時間がかかる。
簡単な問題から順に解いた方がペナルティタイムの合計が少なくてすむICPCにおいては、問題の難易度を見極めることが非常に重要だ。
しかし、そのためにまず10問全ての問題文を読んで解法を導き出すなんてことをやっていては、それだけで大幅に時間をくってしまい、本末転倒だ。
例年簡単な問題が配置されていることが多いAとBや(真っ先にタマキとトウコにこの2問を投げたのはこれが理由)、さっきのFのようにキーワードからぱっと問題と解法が推測できる場合はいいが、そういうケースはあまり多くない。
そこで、問題を解く順番を決めるのに役に立つのが、
会場前面のスクリーンに大きく映し出されている順位表には、どのチームが、どの問題を、何回間違え、最終的にどのくらいの時間に通したのかが、事細かく記載されている。
1つのチームが、全10問の中から簡単な問題を的確に探し当てるのは難しいとしても、それが集団になれば話は変わる。
どのチームも、何の事前情報もない段階では、ランダムにでも、とにかく何かしらの問題文を読まなければ話は進まない。そこで難しい問題に当たってしまえばそれまでだが、偶然簡単な問題を引き当てたチームは、迷わずその問題を通しに行くだろう。
1つ1つのチームは十分に賢い挙動を示すとは限らなくても、多くのサンプルが積み重なれば、各問題の難易度が浮き彫りになってくる。
つまりは、順位表を見れば、多くのチームが通している問題ほど簡単な問題であると判断できる。
アジア地区予選まで来るようなチームであれば、誰しもが理解し活用している、ICPCにおける常套戦術。
チームリーダーとして、誰にどの問題を割り振るべきかをできるだけ正確に判断しなければいけないあたしは、順位表全体に素早く目を通して、すでにどこかのチームの手によって解かれた問題をリストアップする。
「AとB……を除けば、あと解かれているのは、H問題、だけね」
コンテスト開始後15分で、HがAcceptedされている。
さっそく問題冊子をめくって、そのH問題とやらを読む。
Problem H : ASCII Expression 以下のような、2次元グリッド上に表現された数式が入力として与えられる(サイズは20×80以下)。 BNFに似たルールに従って、数式を計算した結果を2011で割った余りを出力せよ。 ............2............................2...................................... ...........3............................3....................................... ..........----.........................----..................................... ............4............................4...................................... .....2.+.------.+.1...............2.+.------.+.1................................ ............2............................2...................................... ...........2............................2........................2.............. ..........----.........................----.....................3............... ............2............................2.....................----............. ...........3............................3........................4.............. (.(.----------------.+.2.+.3.).*.----------------.+.2.).*.2.+.------.+.1.+.2.*.5 ............2............................2.......................2.............. ...........5............................5.......................2............... ..........----.........................----....................----............. ............6............................6.......................2.............. .........------.......................------....................3............... ............3............................3......................................
「これ、は……!」
いわゆる、構文解析と呼ばれるタイプの問題。しかも2次元グリッドという見慣れない形式での。
「こんなもの、一体どうやったら、たった15分で通せるわけ……?」
構文解析の問題は、やることはシンプルで紛れも少ないが、実装量はかなり多く、どうやっても多大な時間の消費は避けられないものと相場が決まっている。
だが、現に通しているチームがいる以上、Xmas Contest 2010のB問題のように、強実装に見えて実は気づけば一瞬で解ける問題、なのか……?
問題文をもういちど精読し、見落としがないかどうか確認しようとして――――唐突に閃いた。
「まさか……!」
顔を上げて、もう一度順位表を確認する。
H問題を通したチームの名は――――ブレインネクサス。
0:18経過 【ブレインネクサス】 H 1/10完
「やったねヒロト」「うん、大成功だね。ナオト」
高橋ナオトと、高橋ヒロト。
チーム【ブレインネクサス】の核たる双子の兄弟が、にっこりと笑みを交わし合う。
皆がA問題やB問題しか通していない中で、ブレインネクサスがH問題を通した。
この事実が、コンテストへと与える影響は、計り知れない。
「みんな、慌ててH問題を読み出してるよ」「必死に考えているチームもいるね」
周囲のチームの様子を観察しながら、自分たちの狙いが的中したことを悟る。
この作戦が決まれば、上位陣の戦線ですらガタガタにすることができる。
そんな未来を想像して、兄弟は無邪気に微笑んだ。
「ヤヒロちゃん、他の問題の翻訳はどう?」「残ってるのはあと6問だったよね」
ブレインネクサスの3人目である彼女のTopCoderのランクは、
だが、そんな彼女も、ブレインネクサスでは欠かせない役割を担っている。
英語で書かれた問題文の読解、そして要約。
高橋兄弟がプログラミング以外の些事に煩わされることのないよう、兄弟と問題文との間の橋渡しを行う。
それが、彼女にしかできない、ブレインネクサスにおける伊藤ヤヒロの役割だった。
「B、C、E、G、I、Jの翻訳、全て終わりました」
「さすが、優秀だね。……ナオト、この問題の中だと、Iが一番いいみたいだよ」「了解だよ、ヒロト」
ヤヒロがヒロトに渡した何枚かの紙には、彼女の几帳面さが伝わってくるような小さく整った文字で、全ての問題文の大意が簡潔かつ的確にまとめられている。
たとえプログラミングスキルが皆無であろうとも、これをコンテスト開始からわずか20分以内に行えるほどの実力を持った人間は、
コンテストの序盤に、他のチームが10問もの問題文を少しずつ読み解くのに四苦八苦している中で、自分たちだけが全ての問題文に関する完璧な情報を得られることのアドバンテージは、思いのほか大きい。
読んだだけで解法がすぐに分かる簡単な問題を、決して見逃すことがないのだから。
だが、ブレインネクサスの作戦は、この情報アドバンテージを、ただ消費するだけには留まらない。独占した情報を活かして、場の流行を操作する。
順位表を見て次に解くべき問題を決めるという方法を、誰もが理解し活用しているからこそ、それを逆に利用する。
読めばすぐに解き方が分かる問題の中から、もっとも実装が重い1題を選んで、できるだけ早くAccepted。
ブレインネクサスは、狙い通り、AとB以外で解かれている問題がHしかないという状況を作り出すことに成功した。
そうなれば当然、他のチームは、Hは15分あれば解ける程度の簡単な問題だと思い込む。皆が皆、こぞってH問題を解こうとする。
だが、H問題は強実装。1時間以内に通せるチームすら少ないであろうほどの、難問だ。
それでも、大半のチームは、自らの力だけで難問が難問であることを確信できるほどの実力を備えてはいない。
15分で通したチームが存在するという情報を盲目的に頼りにして、何かに気がつくことができれば一瞬で解けるタイプの問題だと思い込み、無駄に時間を浪費する。
さらに、その影響は、中堅チームだけに留まらない。
優勝争いに絡めるほどの上位チームなら、H問題を読めば、これが簡単な手段で通せる問題ではないことくらいすぐに見抜けるだろう。もしかすると、ブレインネクサスの企みに気づいたチームもいるかもしれない。
しかし、そうしてHを避けたとしても、彼らは次に解くべき簡単な問題を定めることができない。
多くの中堅チームがH問題に囚われて、様々な問題にアタックすることを止めてしまえば、必然、順位表は硬直する。
普段なら、中堅チームのトライ&エラーの結果を参考に、飛び石の上を渡るように悠々と簡単な問題だけを選んで解いていくはずの上位陣が、道標を失って右往左往する。
1つ1つ問題文を読んで、問題の難易度を自力で見極めていくしかない。
そうなれば、ペナルティタイムの増大は避けられない。
全チームの共有資産であるはずの順位表に、誤った情報を流して無力化する。
そして、自分たちだけが握っているヤヒロの要約を参考に、最高速度でコンテストを駆け抜ける。
それこそが、ブレインネクサスの作戦だった。
「I問題は幾何か。この問題も、すっごく大変そうだね」「でも行けるよ。ボクたちなら」
幾何の問題もまた、構文解析と並んで、実装が重くて複雑なジャンルとして知られている。
本来ならば、中盤から終盤にかけて解くべき問題。
にも関わらず、ブレインネクサスは、場にさらなる混乱を招くべく、IのAcceptedを眼前の順位表に叩きつけるために、動く。
「さあ。始めよう、ヒロト」「うん。いつでもいいよ、ナオト」
そう言い合うと、2人は、目を閉じて意識を集中させる。
彼ら兄弟に固有の
「「<
その瞬間、2人の思考は、繋がった。
(#include<iostream>\n#include<complex>\n#include<algorithm>\n#include<cmath>\n#include<vector>\n#include<utility>\n using namespace std;\n#define EPS ……)
かっと目を見開いたナオトの頭の中を、ものすごい速度で文字の羅列が流れていく。
それに応じるように、ヒロトは、凄まじい速度で流れるようにキーボードを打鍵する。
みるみるうちに、ディスプレイの中にI問題を解くためのソースコードが組み上がっていく。
(double a=abs(c[j]-c[i]),b=R-r[i],x=R-r[j],costheta=(a*a+b*b-x*x)/(2*a*b);\nif(costheta<-1+EPS)cnt++;\nelse if(costheta<1-EPS){\ndouble theta=acos(costheta),t1=arg(c[j]-c[i])+theta,t2=arg(c[j]-c[i])-theta;\nwhile(t1>M_PI)t1-=2*M_PI;\nwhile(t1<-M_PI)t1+=2*M_PI;\nwhile(t2>M_PI)t2-=2*M_PI;\nwhile(t2<-M_PI)t2+=2*M_PI;\nif(t1<t2)cnt++;\nevent.push_back(make_pair(t1,-1));\nevent.push_back(make_pair(t2,1));\n}\n}\nsort(event.begin(),event.end());\nif(event.size()==0){\n……)
滝が流れ落ちるがごときスピードで、ナオトの脳内をソースコードが駆け巡る。
ヒロトは、その思考を正確に救い上げて、目の前のキーボードへ向けて転写する。
<
このスキルの発動中は、脳の一部が
言葉を介さず、相手の脳に直接思考を書き込む。
自分の意思を相手に伝えるのに、これほど効果的なコミュニケーション手段もない。
やわらか頭脳を誇る高橋ナオトが、閃いた解法をコードに落としてヒロトの
全国タイピング甲子園で優勝経験のある高橋ヒロトが、書き込まれたソースコードを、恐るべき速度と正確さでそのままテキストファイルに起こす。
言うなれば、一切の無駄を排した、究極のペアプログラミング。
“最強最速の双子”と称される彼らのコーディング速度は、他の追随を許さない。
普通のプログラマーのコーディングに時間がかかるのは、思考とタイピングを交互に行っているからだ。
人間は、2つの物事を同時に実行できるようには作られていない。
思考中は、文字をタイプする手は止まり、タイピング中には、どうしても思考は止まる。
その度重なる切り替えで思考の断絶が何度も生じてしまい、余計な時間を消費する。
しかし、彼ら高橋兄弟にはそれがない。
兄のナオトは、書くことを一切気にせずに、ただ最高の効率で考え続けるだけ。
弟のヒロトは、考えることを一切せずに、ただ与えられた文字列を最高の速度で打ち込み続けるだけ。
他の誰にも真似できない、最強最速の役割分担。
Hを15分で通す、という作戦を成功させることができたのも、ブレインネクサスに高橋兄弟がいたからこそだ。他のチームでは、たとえ真似しようとしたとしても、Hを通す頃には、本当に簡単な問題があらかた判明し尽くしてしまっているのがオチだろう。
(ans+=(next-event[k].first)*(R-r[i]);\n}\n}\nif(maxcnt<n)impossible++;\n}\n}\nif(impossible==n)puts("0.0");\nelse printf("%f\n",ans);\n}\n}\n。……できたっ!)
最後に、ヒロトが一際強くエンターキーを押し込み、Iの回答コードは完成した。
コード長は、1717バイト。それを彼ら兄弟は、わずか2分40秒で書き上げた。
秒間10.7打鍵。ナオトの思考を組み取る際にわずかなロスが生じるとはいえ、これだけでもタイピングに慣れた人間がコードを写経した際の速度を上回る。
「さあ、
ずっとディスプレイを見つめ続けていたヒロトが、ナオトに声をかける。
「……ナオト?」
しかし、いつもならばすぐに返事がくるはずの相手から、何の反応もない。
不思議に思って振り向くと、ナオトは会場前面の順位表を見つめて、唖然としていた。
「どうしたの、ナオ……っ!!」
そして、気づく。
順位表の中にある、余りに異様なその1点に。
慌てて周囲を見回し、周りのチームの様子を確認する。
だが、もはや誰一人としてH問題に取り組んでいる様子はない。
「ナオト……!」「ヒロト……!」
やられた。まさか、こんな方法で流行操作を無力化されるなんて。
<
2人は、驚きと悔しさ、そして憎しみを込めて、「それ」を実行に移したチームの名を叫んだ。
「「ノーネーム……!!」」
0:27経過 【__________ 】 A 1/10完
「うわぁー。サクヤちゃんが悪い顔してるよぉ……」
タマキがまん丸い目でこちらを見つめながら、そんな失礼なことをのたまってきやがった。
失敬な。あたしはただ、先輩への礼儀を知らない生意気なガキどもに、お灸を据えてやっただけだっての。ただし、気持ちちょっとだけキツめに。
「でも、今ので不利になったのは私たちも同じ。サクヤ、どうする」
「どうもしない。あたしたちは、Strictlyにカズミの野郎を上回ればいい。完数で勝つ、それだけよ」
「わかった、従う。それと」
「何?」
「B問題、Accepted」
「よくやったトウコっ!」
青い風船が上がる。これで2完目だ。
そこに表示されている、今のあたしたちの成績は。
【
Score:2
Penalty Time:44(+100)
A問題 Solved Time +16
B問題 Solved Time +28
H問題 ------ Time (+100)
まず、タマキが開始16分でAを解いて、1完。
続けて、コーディング方針を固めていたトウコがBを12分で通して、2完。
最後に、あたしが“最強最速の双子”をぶっ飛ばすために被った潜在的なペナルティが、+100分だ。
「あっ、サクヤちゃん! ブレインネクサスが、今度はIを通したよ!」
I問題?
ふむ……今度は幾何ね。どうせまた強実装のやるだけ問題なんでしょ。
「トウコ。懲りないガキどもに制裁。オペレーション
「いぇす、まいろーど」
トウコはI問題を開くと、ついさっき解いたばかりのB問題のソースコードを選択し、そのまま
No - Wrong Answer.
No - Wrong Answer.
No - Wrong Answer.
No - Wrong Answer.
No - Wrong Answer.
またたく間に不正解のメッセージが積み重なり、潜在的ペナルティタイムが膨れ上がる。
【
Score:2
Penalty Time:44(+200)
A問題 Solved Time +16
B問題 Solved Time +28
H問題 ------ Time (+100)
I問題 ------ Time (+100)
その瞬間、Iに挑戦しようと思っていた他のチームが、ざわつき出したのが肌で感じられた。
H問題のときと全く同じ反応だ。まあ、そりゃ戸惑いもするでしょうね。
なんせ、今まさに自分たちが挑もうとしていたI問題に、前回準優勝チームが5回も
これを額面通りに受け取れば、実力のあるチームが5WAもするような危険な問題は避けようと思う。
もしも不自然なWAラッシュに違和感を覚えたとしても、それはそれで、何か裏がありそうなよく分からない問題は後回しにしようと考える。
たとえどちらに転んだとしても、ブレインネクサスの流行操作に一石を投じることができる、という寸法だ。
もし、「Hは難問ですから皆さん手を出さない方がいいですよー!」などと大声で叫ぼうものなら、下手をしなくとも退場処分だ。
でも、これなら、ルール上何の問題もない。
なんせ、あたしたちはただ、問題に挑んでWrong Answerを出しただけなんだからね。
ブレインネクサスの机を見やると、高橋兄弟が、悔しそうにこちらを睨みつけている。
ああ、いい気味だ…………じゃなくて、これであいつらが順位表を荒らしてくることはもうなくなったと見ていいだろう。
一度この5WA戦術を実行に移して潜在的+100ペナルティをくらってしまった以上、同じことを2度やろうと3度やろうと、あたしたちに被害は少ない。どうせ同じ完数ならば勝ち目はないことに変わりはないのだから。
ゆえに、ブレインネクサスが何度同じことを繰り返してこようと、あたしたちは、そのたびに何の躊躇いもなく全く同じ返し技が使える。そして、そのことはもちろんブレインネクサス側も承知している。
だから、ブレインネクサスには、もうこれ以上不自然な順番で問題を解き続けるメリットがないのだ。いくら最強最速とはいえ、簡単な問題から解いた方が合計ペナルティが小さくなることには変わりがない。もう場を撹乱することが不可能だと分かった以上、彼らも自分たちの利益を最大化するために動くに決まっている。
これでめでたくナッシュ均衡が成立。ノーネームとブレインネクサスの、ごく個人的な闘いは終了だ。
「でも、サクヤちゃん。本当にあんなにペナルティもらっちゃって、良かったの?」
タマキが不安そうに訊ねてくる。
まあ、そう思うのも当然でしょうね。というか、別に良くはない。
「順位表が硬直して、より被害を被るのはあたしたちの方だからね」
もちろん、あたしが言ってる比較対象は、チーム玉兎のことだ。
「あんたも知ってるでしょ? 緋笠カズミの
<
緋笠カズミの持つそのスキルは、「問題を読んだ瞬間、その正しい解法が頭の中に浮かび上がってくる」という、いかにもチートくさい常時発動型の能力だ。
ゆえに、極端に実装が重いもしくは複雑な問題を除けば、カズミにとって全ての問題はほぼ等価。
たとえ順位表が使えなくなったところで、頭から順に目についた問題を解いていきでもすれば、それだけで他を圧倒するほどに小さいペナルティタイムを叩き出せるだろう。
「解法を考える」という、競技プログラマーにとって何よりも重要なステップから解放されたカズミは、高橋兄弟とは別の意味で最速。それも、終盤の難しい問題になればなるほど、他のコーダーと比べての相対的な速度は増していく。
まともにペナルティタイムで競い合っても、勝ち目は薄い。
あたしたちには、もとより完数で勝つしか選択肢がなかったからこそ、ペナルティ+100みたいな大胆な戦術に踏み切れた、というわけだ。
「だから、あたしはペナルティタイムを犠牲にしてでも、順位表を正常に戻すことを選択したってわけ。完数で勝つために、5時間という限られた時間を少しでも無駄にしたくない。簡単に解ける問題がどれか分かってるっていうのは、戦略を立てる上でも大きなアドバンテージになるからね」
「なるほどね〜。さすがサクヤちゃん、色々考えてるんだねー」
「あんたが考えなさすぎなのよ……っと。よし、できた。F問題、Acceptedよ」
「やったねサクヤちゃん! おおー、ピンクの風船だ! これで3完だよ!」
手を叩いて喜ぶタマキ。
まあ、ちゃんとFの問題文を読んでみたら、本当にただのShortest Superstring問題だったんだけどね。しかも復元もなし。こんなの、脳内にあるライブラリをただ打ち込むだけの簡単な作業だ。
高橋ヒロトほどの速度はないにしても、あたしだってタイピングはそこそこ速い。考えることがないのだから、楽勝にもほどがある。
「さっきも言った通り、あたしはこのままDを解き始めるわ。復活した順位表も参考にしつつ、あんたたち2人は次に解く問題を考えといて。任せたわよ」
「了解だよっ!」「あいあいさー」
F問題はないも同然だったので、トウコがBを解いている間、あたしは(H問題に拘泥しなくなった何チームかが解いていた)Dが簡単な問題だと判断して、解法を考えておいた。
Fほど速攻ではないにしろ、それほど時間もかからず通せるだろう。
D.cppを開く前に、もう一度、順位表の一番上に目をやる。
そこに当たり前のように居座っている怪物、すでにノーネームと1完差をつけてトップに君臨している化け物チームを率いる女王の名を、改めて胸に刻む。
――覚悟してなさいよ、緋笠カズミ。
1:05経過 【玉兎 】 ABFG 4/10完
現在の順位:
1位 【玉兎】 ABFG 4完 ペナルティ+108
2位 【__________】 ABF 3完 ペナルティ+86
3位 【ブレインネクサス】 AHI 3完 ペナルティ+93
「ふむ……。Wrong Answer覚悟での自爆戦術か。秋葉サクヤも、なかなか面白いことを考えるものだね」
C問題のソースコードを淡々と一定のリズムで打ち込みながら、緋笠カズミは呟いた。
そして、つい先ほどサクヤがタマキに説明したのと同じ思考を辿り、その突飛な作戦こそが彼女にとっては最善の選択であったとも確信する。
「いやはや、実に愉快だ。だが、それでこそ闘いがいがあると言うものか」
そう言いながらも、彼女の口調からは、自分が負けるなどとは微塵も思っていないことが伝わってくる。
「さあ、ノーネームの諸君。君達は、
アルゴリズムを考える時間が完全に“0”であるカズミは、自身の圧倒的優位を客観的に認識しつつも、しかし一切の油断を含まない声で、不敵に笑った。
それは、TopCoderのレーティングが3000以上になった人間にのみ与えられる、競技プログラマーにとっては最高位の称号の1つ。
レーティング2200以上の
「さて。C問題、Acceptedだ。次はDでも解くとするか」
コンテストを支配する女王たる存在、この場で唯一の
わずか1時間20分で、10問中5問、半分の問題を解き終えて、2位以下に2完差をつけたカズミは、ふと唐突に何かを思いついたらしく口を開く。
「ああ、そうだ。その前に、潰せるチームは潰しておかないとね」
と。
「<
本当に、何気なく呟いた。
1:27経過 【ブレインネクサス】 AHI 3/10完
「B問題、組めたよナオト!」「やったねヒロト! 早速テストだ!」
完成したコードをコンパイルして、サンプルインプットを入力として与えてやる。
その結果は。
「あ、れ……?」「なんで……?」
Segmentation fault.
そう1行だけ表示された画面を見つめ、呆然とする高橋兄弟。
慌ててソースコードを読み返して、さらに愕然する。
「何!? このプログラム」「メチャクチャだ……!」
文単位では意味が通るものの、全体として何をやりたいのかまるで判然としない。
ただ単に、コンパイルできる文をランダムに並び変えただけのような、B問題とは一切関係のないコードの羅列。
2人の目の前に現れたのは、そういう、まるで意味の分からないソースコードだった。
「ヒロト! これどういうこと!?」「ナオト! ボクにだって分からないよ!」
ナオトは、確かにB問題を解くためのコードを正確に思い浮かべた。
ヒロトも、確かに脳の
どちらかのミスで、多少のバグが混入することはあれど、ここまで意味不明なコードが出来上がるはずがない。
「ナオト! とにかくもう1回、行くよ!」「うん! ヒロト!」
「「<
“最強最速の双子”は、再び彼らの
だが、高橋兄弟のこの選択は、完全な判断ミスだった。
理解できない現象には、必ず何かしらの理由がある。
その原因を明らかにしないまま、いくら同じことを繰り返しても、結果は同じ。
それは例えるなら、Time Limit Exceededをもらったソースコードを、もしかしたら僅かな差で通るかもしれないという希望に縋って、何度も何度も提出し続けるような行為に等しかった。
1:41経過 【世界一 】 0/10完
「ふふ。双子ちゃんたち、大変ねぇ」
絵空トオルは、ふんわりとした甘い声で呟いた。
1問たりともAcceptを出さないと豪語した彼女は、その宣言通り、コンテストが始まってからずっと、他のチームの様子を観察しているだけだった。
その表情には、微笑みが絶えない。
「あの、絵空さん。高橋兄弟に、一体何が?」
そう訊ねたのは、
彼女は、トオルがまともに争うつもりがないということを理解したうえで、チーム世界一のメンバーとしてここにいる、いわばトオルの付き人のような存在だ。
「ああ、あれはねぇ。双子ちゃんが<
「? 彼らが
「ええ。双子ちゃんの
「緋笠カズミの、<結線>? 彼女の能力は、<
「あら、知らなかった? カズミちゃんは、スキルを2つ持っている、世にも珍しい競技プログラマーなのよぉ」
だが、2つの異なるスキルを同時に使いこなす人間など、聞いたこともない。
「
「普通はないわよぉ。だからこそ、カズミちゃんは特別なのねぇ」
トオルは、そんな競技プログラマーは、カズミ以外に見たことがないと言う。
そして、彼女が知らないのなら、それは本当に世界中でカズミだけなのだろう。
「カズミちゃんのもう1つの能力、<
<結線>によって作られる
だがそこに、いわゆるアクセス履歴のようなものは残らない。
第三者の手による、悪意あるデータの改竄に気づけない。
「なるほど。それで、あの兄弟はあんなに慌てているというわけですか」
「3人目の<結線>使いが現れるなんて、普通じゃ起こりえないことだから、たぶん双子ちゃんたちは、自分たちの身に何が起こっているのかさえ分かってないわねぇ。それに、もし理解できたところで、逆転は難しいでしょうねぇ」
仮に高橋兄弟が緋笠カズミの介入に気づけたとしても、それを止める手だてがないのならば何の意味もない。逆に高橋兄弟がカズミの共有領域にノイズを書き込んだとしても、それをカズミに無視されて終わりである。
そもそも、正しいプログラムを正確に伝えなければならない高橋ナオトと違って、緋笠カズミは適当なタイミングで適当なコードを共有領域に書き込んでやるだけでいい。事実、カズミはこの介入をなかば無意識的に行っており、それによってカズミ自身のコーディングに悪影響が出ることもない。
そして、最強最速の連携が断たれてしまえば、2人は並の競技プログラマー以下のパフォーマンスしか発揮することができない。加えて、3人目のメンバーである伊藤ヤヒロも、プログラマーとしては完全に戦力外だ。
「ブレインネクサスは、ここで事実上の脱落、ですか」
それにしても、とアイチは思う。
コンテストにおいては万能と言ってもいい効果を持つ、<
汎用性が高く、仮にヘウレカ以上の性能を持ったスキルの使い手が現れたとしても対応できる、コピー能力<
そして、
こんな超人めいた力を持った相手に、まともな人間が勝つ方法なんて、本当に存在するのだろうか?
しかし、目の前にいるこのお嬢様の反応を見ていると、どうやら彼女は、このコンテストが緋笠カズミの独壇場だとは思っていないようなのだ。
先ほどからトオルがしょっちゅう様子を気にしている、とあるチーム。
もしかすると、そのチームが、カズミに勝利するなんて奇跡が、起こりうるのだろうか?
そう考えて、アイチは、思ったままをトオルに告げる。
「絵空さん。あなたは……
絵空トオルは、コンテスト開始直後から、ノーネームの3人の様子を実に楽しそうに眺めていた。
もしや彼女たちは、カズミを上回るほどの特別な存在なのか。
「そうねぇ…………」
アイチの興味本位の質問に、この場で唯一カズミよりも格上の、人類最強のお嬢様は、しばし考え込むような様子を見せた後、
「五分五分、ってところかしらねぇ?」
と、答えた。
(No.2/3につづく)