\(2\) つのプログラム Alice, Bob が協力してゲームを \(T\) 回行います。
各ゲームは次のように行われます。
| \(0\) 以上 \(2^{60}\) 未満の整数 \(X\) があります。はじめ、Alice のみ \(X\) を知っています。 |
| 整数 \(x\) があり、はじめ \(x=0\) です。ゲームの目的は \(x\) を \(X\) に一致させることです。 |
| そのために、Alice から交互に、以下の \(4\) つの操作のうち \(1\) つ選んで行うことができます。 |
| ただし、\(x\) の値は常に \(0\) 以上 \(2^{60}\) 未満となっている必要があります。 |
一方のプログラムが操作をしたとき、どの操作をしたかが他方のプログラムに教えられます。 |
| answer を行ったときに \(x\) と \(X\) が一致していたらゲームは成功となります。このとき、\(2\) つのプログラムが行った操作回数の和が少ないほど良い評価が得られます。 |
できるだけ少ない回数の操作でゲームを成功させるような \(2\) つのプログラム Alice, Bob を作成してください。
すべてのゲームにおいて、\(2\) つのプログラムが行った操作回数の和が \(120\) 回以下であるとき、満点が得られます。
この問題はインタラクティブ問題(あなたの作成したプログラムとジャッジプログラムが入出力を介して対話を行う形式の問題)です。 Alice として振る舞うあなたのプログラムと、Bob として振る舞うあなたのプログラムが、ジャッジプログラムを介してゲームを行います。
あなたのプログラムは、最初に以下の形式で入力を受け取ってください。
| \(\mathrm{Player}\) | |
| \(T\) |
ここで、\(\mathrm{Player}\) は文字列 Alice または文字列 Bob であり、\(T\) は \(1\) 以上 \(100\) 以下の整数です。
その後、各ゲームについて以下に示す入出力を行ってください。
ゲームの開始時、Alice として振る舞うプログラムは、以下の形式で入力を受け取ってください。
| \(X\) |
操作を行う場合、以下の形式で出力してください。
| \(\mathrm{operation}\) |
相手のプログラムが行った操作 \(\mathrm{operation}'\) は、以下の形式で入力を受け取ってください。
| \(\mathrm{operation}'\) |
\(T\) 回目のゲームで文字列 answer を出力した、または入力として受け取った後は、ただちにプログラムを終了してください。
出力形式にミスがあった場合や前回のゲームに失敗した場合、\(1\) 回のゲームにおける \(2\) つのプログラムの操作回数が \(240\) を超えた場合、それ以降の \(X\) や \(\mathrm{operation}'\) は与えられず、文字列 -1 が標準入力から与えられます。この場合、ただちにプログラムを終了してください。
ある \(1\) 回のゲームにおける、\(2\) つのプログラムの操作回数の和を \(Q'\) とします。この問題のすべてのゲームにわたる \(Q'\) の最大値を \(Q\) として、
入出力例
| Alice の入力 | Alice の出力 | Bob の入力 | Bob の出力 | 説明 |
| Alice | Bob | はじめに \(\mathrm{Player}\) と \(T\) が標準入力から与えられます。 | ||
| 3 | 3 | |||
| 1 | Alice に対して \(X\) が標準入力から与えられます。はじめ \(x = 0\) です。 | |||
| plus | Alice が \(x\) に \(1\) を加算する操作を行います。\(x = 1\) となります。 | |||
| plus | Bob に、Alice が行った操作が知らされます。 | |||
| double | Bob が \(x\) を \(2\) 倍する操作を行います。\(x = 2\) となります。 | |||
| double | Alice に、Bob が行った操作が知らされます。 | |||
| minus | Alice が \(x\) から \(1\) を引く操作を行います。\(x = 1\) となります。 | |||
| minus | Bob に、Alice が行った操作が知らされます。 | |||
| answer | Bob が \(x\) と \(X\) が一致したことを報告する操作を行います。 | |||
| \(x\) と \(X\) が一致しているため、ゲームは成功となります。 | ||||
| answer | Alice に、Bob が行った操作が知らされます。 | |||
| 100 | \(2\) 回目のゲームが始まります。 | |||
| Alice に対して \(X\) が標準入力から与えられます。はじめ \(x = 0\) です。 | ||||
| answer | Alice が \(x\) と \(X\) が一致したことを報告する操作を行います。 | |||
| \(x\) と \(X\) が一致していないため、ゲームは失敗となります。 | ||||
| answer | Bob に、Alice が行った操作が知らされます。 | |||
| -1 | -1 | \(2\) 回目のゲームに失敗したため、Alice と Bob の両方に -1 が与えられます。 | ||
| 以降のゲームは行われないため、プログラムを終了させる必要があります。 |