005 - StringGuessing
時間制限 1 秒 / メモリ制限 64 MB / 得点 100 / x 4 /
問題
あなたは屋台の的あてゲームで遊ぼうと思っています。
このゲームはa~zまでのアルファベットが書かれたパネルにボールを投げて、当たった順番に文字をつなげて文字列を作ります。
一度当てたパネルは倒れるので、1ゲーム中では二度当てることはできません。
その後、もしその文字列がとある文字列$S$と一致していれば景品がもらえます。
ただ、この屋台の主人は意地悪なので、あらかじめ$S$の長さしか教えてくれません。
ゲームが終わった後、主人はいずれかの対応をとります。
①「作った文字列より$S$のほうが辞書順で小さい」という。
②「作った文字列より$S$のほうが辞書順で大きい」という。
③「作った文字列と$S$は一致する」といい、景品を渡す。
的あてに自信のあるあなたは必ず狙ったパネルにボールを当てることができます。
一回のゲームは100円ですが、あなたの財布には9000円が入っていますので、最大90回遊べます。
文字列$S$を無事特定し、景品を当てることはできるでしょうか?
制約
文字列$S$はアルファベットの子文字で構成されている
$1≦|S|≦26$($|S|$は文字列$S$の大きさ)
$i≠j$ならば$S_i≠S_j$($S_i$は文字列$S$の$i$文字目)
入出力
この問題はリアクティブな問題です。まず標準入力から一つの整数$|S|$を受け取ってください。
その後、文字列を一つ出力してください。ただし、以下の条件を満たしていなければなりません。
・26文字以下のアルファベットの小文字で構成されている。
・すべてのアルファベットは文字列中に0回か1回しか使われない。
もし以上の条件が満たされない場合、「不正解1」と判定されます。
それに応じて、もし辞書順で$S$のほうが小さい場合は
less辞書順で$S$のほうが大きい場合は
greaterと入力で与えられます。
もし$S$と一致する文字列を出力した場合、プログラムは
equalと出力するので、すぐにプログラムを正常終了させてください。
もし所持金をすべて使いきっても$S$と一致する文字列を出力できなかった場合、「不正解2」と判定されます。
部分点
この問題には部分点が設定されています。
あなたは友人から4000円を借りることで合計で130回ゲームを遊ぶこともできます。ただ、その場合友達がかわいそうなので、この問題では10点しか与えません。
入出力例
21:48 lessとgreaterが逆になっているのを訂正しました。S="cat"の時の例です。
出力|入力 |3 a |greater b |greater c |greater d |less ca |greater cb |less cab |greater can |greater cat |equal
標準出力は一行ごとにフラッシュしてください。