GCJ Round 1B

本当は 1A に参加したかったのですが用事があったので、昨日の深夜の 1B に参加しました。結果からいうと 164 位で通過。(scoreboard: http://code.google.com/codejam/contest/scoreboard?c=186264#vf=1&sp=161)

C はあまり解ける気がしなかったのと早く寝たかったので手をつけず、A, B の large を提出して切り上げました。幸い全部通ってわりといい順位に。

A は、decision tree が S-expression で与えられて、それを問題文の指示に従って辿るだけの簡単なお仕事。Lisp なら初学者の演習問題によいレベルでしょう。

B は、与えられた文字列の permutation を辞書式に並べて、元の文字列の次に来るやつを作れという趣旨の問題。C++ なら next_permutation 使えば一発という話。そんなものの存在はコンテスト中には思い出さなかったので、変な誘惑に駆られることなく冷静に Lisp で実装することができました。地道にやればできる。

C は数十秒考えて解けそうになかったのでスルー。後で少し考えてみたりもしましたが、やっぱりよくわからない。自分より上の人の大部分はこの問題を解けているので、これくらいは解けないと上にはいけないんだろうなとは思いますが。