No.3018 目隠し宝探し
タグ : / 解いたユーザー数 85
作問者 : loop0919 / テスター : eom2357 岩井星人の一万円獲得を阻む者 Apollo@Kuro DeltaStruct Yama.can こめだわら のらら あじゃじゃ 👑 binap
問題文
岩井星人さんは、目隠しをしながらゲーム配信をしています。
岩井星人さんのために、宝物の位置を特定するプログラムを書いてください。
この問題はインタラクティブな問題(あなたの作成したプログラムとジャッジシステムが入出力を介して対話を行う形式の問題)です。
また、ジャッジは適応的(adaptive)です。詳細は注意点を参照してください。
縦 $H$ マス、横 $W$ マスのグリッドがあります。上から $i$ 番目、左から $j$ 番目のマスをマス $(i, j)$ といいます。
グリッドのちょうど $1$ つのマスに宝物があります。あなたの目標は、その宝物のあるマスを特定することです。
あなたはジャッジシステムに対して、以下のを質問を繰り返し行うことができます。
- グリッド上のマスを $1$ つ選ぶ。選んだマスと宝物のあるマスとのユークリッド距離の $2$ 乗を質問する。
ここでマス $(i, j)$ とマス $(i', j')$ のユークリッド距離の $2$ 乗とは、$(i - i')^2 + (j - j')^2$ のことを指します。
テストケースごとに隠された、整数 $p$ を、縦 $H$ マス、横 $W$ マスのグリッドのいずれのマスに宝物があっても適切な質問で一意に特定できる質問回数の最小値と定義します。
$p$ 回以下の質問回数で宝物のあるマスを特定してください。
制約
- $1 \le H, W \le 1000$
- $H, W$ は整数である
- 宝物のあるマスはちょうど $1$ つ存在する
入出力
この問題はインタラクティブな問題(あなたの作成したプログラムとジャッジシステムが入出力を介して対話を行う形式の問題)です。
最初に $H, W$ が与えられるので、標準入力から受け取ってください。
$H$ $W$
その後、以下の質問を $0$ 回以上 $p$ 回以下繰り返してください。
質問は、選ぶマスをマス $(i, j)$ としたとき、整数 $i, j ~ (1 \le i \le H, ~ 1 \le j \le W)$ を用いて以下の形式で標準出力に出力してください。
? $i$ $j$
その後、マス $(i, j)$ と宝物のあるマスのユークリッド距離の $2$ 乗を整数 $d$ としたとき、質問への応答が以下の形式で標準入力から与えられます。
$d$
ただし、質問が不当であった場合、-1
が標準入力から与えられます。
-1
具体的には、
- 出力した $i, j$ が制約を満たさなかった
- $p$ 回を超えて質問をした
このとき、不正解であることが確定しているため、ただちにプログラムを終了してください。
最後に、次の形式で標準出力に出力することで、宝物がマス $(i, j)$ にあると解答します。
! $i$ $j$
この出力の後、ただちにプログラムを終了してください。
なお、全ての出力について、出力が指定された形式を満たさなかった場合もプログラムが不正解とみなされます。
その後 -1
が返答されるので、その場合も直ちにプログラムを終了してください。
注意点
- 出力を行うたびに、末尾に改行を入れて標準出力を flush してください。そうしなかった場合、ジャッジ結果が TLE となる可能性があります。
- 解答を出力したら(または
-1
を受け取ったら)ただちにプログラムを終了してください。そうしなかった場合、ジャッジ結果は不定です。 - 余計な改行は不当な形式の出力とみなされることに注意してください。
-
この問題のジャッジシステムは、適応的(adaptive)です。
つまり、ジャッジシステムは、任意のタイミングにおいて、整合性がとれる限り、宝物のあるマスとして想定しているものを変更する可能性があります。
詳しくは入出力例も参照してください。
サンプル
サンプル
この入力では $H = 6, ~ W = 7$ であり、はじめジャッジシステムは宝物がマス $(1, 3)$ にあると想定しています。
入力 | 出力 | 説明 |
---|---|---|
6 7 | $H, W$ が入力されます。 | |
? 3 2 |
マス $(3, 2)$ と宝物のあるマスとのユークリッド距離の $2$ 乗を質問します。 | |
5 |
$(3 - 1)^2 + (2 - 3)^2 = 5$ であるため、応答として $5$ が返されます。 | |
? 3 6 |
マス $(3, 6)$ と宝物のあるマスとのユークリッド距離の $2$ 乗を質問します。 | |
13 |
$(3 - 1)^2 + (6 - 3)^2 = 13$ であるため、応答として $13$ が返されます。 | |
! 1 3 |
宝物がマス $(1, 3)$ にあると解答します。 | |
確かにマス $(1, 3)$ に宝物がありますが、マス $(5, 3)$ にあるとしても整合性が取れます。 よって、ジャッジシステムは宝物がマス $(5, 3)$ にあると変更することができます。 これにより、ジャッジシステムは不正解の判定を下すこともあります。 |
提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。