UFO 2.0

今日は ICPC の国内予選。国際プログラミングコンテストの国内予選。私は、2年の時にバイト先の IS の某先輩にその存在を聞き、3年の時から参加しているので、都合3度目の挑戦となる。過去2度とも、強力な先輩に敗れ、そして同期の klonoa に破れた2年間。今年は年齢制限のため、参加できる最後の年。今年こそ勝ちたいと思う一方で、なにげに締め切り前の身ですので・・・。


今大会の作戦は、ちゃんと役割分担を考える。タイピング+αが一番速いといわれているボクが、基本的に PC を使って、残りの人で問題を考えたりデバッグをする。開始後の作戦は決まって、ボクが A から順に簡単な問題を解く。A は簡単な素数判定+αだったが、おーくらに適当に作ればよくね?みたいにいわれて適当に作ったら通った。1 が素数じゃない判定を忘れて WA だしたのは秘密。

B は A を書いてる間に問題を読んでいてくれた。問題は難しくない。ただ、ボクが実装するときに、string のコンストラクタの char と int の順番を逆にしたせいで、無駄なロスをした。今日はいまいちバグが多い。

E は得意のパーサー。のはずだったが、へこいプログラムを書いてはまる。残りのデバッグを任せて、実は D が簡単との情報を頼りに、 D を解く。確かに、書けば解けそうな問題で、書いたら解けた。途中、問題の読み間違いなどがあって、デバッグはあったけど。その間に、E のデバッグが完了して、 E も accept。そして、この時点で 8位。しかし、 E のデバッグに時間をかけすぎた。残り 50 分。どうする?

この時点での順位を見る限り、残り1問で代表入り決定と思われた。E のデバッグの間に、見切り発車的に解いていた F があったのだが(しかも動いていて、しかも答えが違う)、残りの時間を C に費やすか、 F に専念するかせまられる。「10分考えて有効なアルゴリズムが思いつかなかったら F にかけよう」。しかし、C は残り時間に対して、難解すぎた。F は要約(?)すれば、不連続点が有限箇所の関数の最大と最小を求める問題。不連続点はとけることから、極地をとることは「きっと」ない。有限箇所の不連続点に最大と最小が含まれるだろう、という予想を立てたのだった。鬼の形相でこのプログラムを書き上げるのだったが、sample output の答えはこの点の中に含まれないことがわかるだけだった。だめだった。これはちゃんと微分しなくちゃいけないのかなぁ、なんてぼやいている間に、制限時間は過ぎていった。

1年目の /Ox の悲劇、去年の私のミスによる敗北を経て今年。全体 9 位の、学内 4 位。学内 3 位までじゃないと本戦に出られないのがルール。かつてない惜しさ。残念。ちょっとずつ成長してるんだよ、とか上位チームが抜けただけだよとか、いろいろ声はありますけど・・・。

優勝した makegumi、そして念願かなって本戦出場できた kitsune- おめでとう。

この3人でプログラムを組むこともこれで最後かもしれない。思えば3年の時に招集したこのメンバー。力及ばないところがあったかもしれないが、最後までつきあってくれた2人には感謝している。