問題一覧 > 通常問題

No.2925 2-Letter Shiritori

レベル : / 実行時間制限 : 1ケース 2.000秒 / メモリ制限 : 512 MB / リアクティブ問題 (詳しくはこちら
タグ : / 解いたユーザー数 132
作問者 : loop0919loop0919 / テスター : ice_utice_ut hirayuu_ychirayuu_yc kusirakusirakusirakusira mymelochanmymelochan tnodinotnodino nouka28nouka28 Nyaa UruzuNyaa Uruzu
5 ProblemId : 11036 / 出題時の順位表 / 自分の提出
問題文最終更新日: 2024-10-12 07:22:38

問題文

この問題はインタラクティブな問題(あなたの作成したプログラムとジャッジシステムが入出力を介して対話を行う形式の問題)です。
英小文字 $\alpha$ が与えられます。あなたはジャッジシステムと次のゲームで対戦します。

文字列を書き込める黒板があり、はじめ黒板には何も書かれていません。
先攻から交互に以下の操作を繰り返します。ここで、 $i$ 番目に黒板に書き込まれた文字列を $S_i$ とします。

  • 次の条件を満たす文字列を黒板に書き込む。(この操作の直前、黒板には $n$ 個 $(n \ge 0)$ の文字列 $(S_1, S_2, \cdots, S_n)$ が書き込まれているとする。)
    • 英小文字のみからなる、長さがちょうど $2$ の文字列である。
    • 今黒板に書き込まれているいずれの文字列とも等しくない。
    • 文字列の $1$ 文字目の文字は
      • $n = 0$ のとき、 $\alpha$ である。
      • $n \geq 1$ のとき、 $S_n$ の $2$ 文字目の文字である。

先に操作が行えなくなった方が負けで、そうでない方が勝ちです。

あなたは先攻としてこのゲームを行います。ジャッジシステムとゲームをして最小手数で勝利してください。
ただし、最適な行動を取った場合、先攻必勝であることが証明できます。

制約

  • $\alpha$ は英小文字である。
  • システムが出力する文字列 $T$ は問題文の条件を満たす。

入出力

この問題はインタラクティブな問題(あなたの作成したプログラムとジャッジシステムが入出力を介して対話を行う形式の問題)です。

最初に、英小文字 $\alpha$ が以下の形式で入力から与えられるので、これを受け取ってください。

$\alpha$

その後、あなたが先攻、ジャッジシステムが後攻でゲームが直ちに開始されます。
このゲームで勝つために必要である、最小の操作回数を $m$ 回とします。
あなたはゲームが終了するまでジャッジシステムと対話して、ゲームに $m$ 回以下の操作で勝利してください。


あなたの手番が回ってきたら、黒板に書き込む文字列 $S$ を以下の形式で出力してください。

? $S$

ジャッジシステムの手番では、以下のいずれかの文字列が出力されます。

  • 次のいずれかに該当する場合、ジャッジシステムは以下の形式で出力をします。
    • あなたが出力形式や条件に反する出力をした場合。
    • あなたが $m$ 回黒板に書き込んでも、あなたがまだ勝利していない場合。
    ! LOSE
    
    この場合、不正解であることが確定しています。直ちにジャッジを終了させてください。

  • ! LOSE がまだ出力されておらず、かつジャッジシステムが黒板に書き込める文字列が存在しない場合、ジャッジシステムは以下の形式で出力をします。
    ! WIN
    
    このとき、あなたは最小手数で勝利しました。直ちにプログラムを終了することで AC になります。

  • 黒板に書き込める文字列が存在すれば、黒板に書き込む文字列 $T$ を以下の形式で出力します。
  • ? $T$
    

ジャッジが ! WIN または ! LOSE を返した場合、ゲームは既に終了しています。この場合、プログラムを直ちに終了してください。

注意点

  • 出力を行うたびに、末尾に改行を入れて標準出力を flush してください。そうしなかった場合、ジャッジ結果が TLE となる可能性があります。
  • 対話の途中で不正な出力を行った、あるいはプログラムが途中で終了した場合のジャッジ結果は不定です。
    特に、プログラムの実行中に実行時エラーが起こった場合に、ジャッジ結果が RE ではなく WATLE になる可能性があることに注意してください。
  • ゲームが終了したらただちにプログラムを終了してください。そうしない場合、ジャッジ結果は不定です。

サンプル

これは $\alpha = $ a の場合の入出力例です。
ただし、このサンプルは WA となる入出力例であることに注意してください。
入力出力説明
a英小文字 $\alpha = $ a が入力されます。
? ac あなたが ac を黒板に書き込みます。黒板には今 $($ ac $)$ が書き込まれています。
? cd ジャッジシステムが cd を黒板に書き込みます。黒板には今 $($ ac$, $ cd $)$ が書き込まれています。
? db あなたが db を黒板に書き込みます。黒板には今 $($ ac $, $ cd $, $ db $)$ が書き込まれています。
? bb ジャッジシステムが bb を黒板に書き込みます。黒板には今 $($ ac $, $ cd $, $ db $, $ bb $)$ が書き込まれています。
? bb あなたが bb を黒板に書き込もうとしますが、黒板には既に bb が書き込まれています。
! LOSE条件に反する出力をしたためあなたは敗北しました。ジャッジ結果は WA となります。

提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。