Universal Cup Judging System

Universal Cup

حد الوقت: 1.0 s حد الذاكرة: 256 MB مجموع النقاط: 100 تفاعلية
الإحصائيات

この問題はインタラクティブ問題です。各行を出力した後、出力バッファをフラッシュする必要があります。C++ では cout << flush、Java では System.out.flush()、Python では sys.stdout.flush() を使用できます。「入出力形式」セクションの指示に厳密に従ってください。そうしない場合、不正解(Wrong Answer)や実行時間制限超過(Time Limit Exceeded)などの判定を受ける可能性があります。

すべての問題が神話のドワーフを主人公にしているため、そろそろ何か具体的なものについて考えてみる価値があるかもしれません。

範囲 $[0, 2^N - 1]$ の整数からなる長さ $N$ の隠された数列 $A$ があります。あなたの課題は、限られた回数のクエリを使ってそれを復元することです。各クエリでは、範囲 $[0, 2^N - 1]$ の要素を持つ長さ $N$ の数列 $B$ を指定します。返答は次のように計算されます。

  • 数列 $C$ が作成され、$C$ の $i$ 番目の要素は $A$ と $B$ の $i$ 番目の要素のビットごとの排他的論理和(bitwise xor)になります。排他的論理和を $\oplus$ で表します。
  • 集合 $S$ は、$C$ の要素のいくつかの部分集合の排他的論理和をとることで得られるすべての値の集合として構築されます。特に、空集合に対する排他的論理和は $0$ です。
  • クエリに対する答えは $|S|$ です。

例えば、$A = (1, 4, 3)$ かつ $B = (0, 4, 7)$ の場合、$C = (1 \oplus 0, 4 \oplus 4, 3 \oplus 7) = (1, 0, 4)$ であり、$S = \{0, 1, 4, 5\}$ となるため、答えは $4$ です。

$2$ つの数 $x$ と $y$ のビットごとの排他的論理和は、$x$ と $y$ のうちちょうど一方のビット $i$ が立っている場合に限り、ビット $i$ が立ちます。例えば、$5 \oplus 3 = (101)_2 \oplus (011)_2 = (110)_2 = 6$ です。C++ および Python では、排他的論理和は演算子 ^ です。

入出力形式

数列 $A$ は最初に固定されており、行われたクエリには依存しません。

まず、$1$ つの整数 $1 \le N \le 60$ を含む行を $1$ 行読み込みます。その後、クエリを送ることができます。

クエリを送るには、? に続けて範囲 $[0, 2^N - 1]$ の $N$ 個の整数を含む行を出力します。その返答として、答えとなる整数を $1$ つ読み込みます。

準備ができたら、! に続けて隠された数列の $N$ 個の整数を出力します。その後、プログラムはそれ以上の出力を行わずに終了しなければなりません。

各クエリの後、および答えを出力した後は、必ず出力をフラッシュしてください。数値と ?、! 記号の間には空白を入れてください。

入出力例

入力例 1

3
4
8

出力例 1

? 1 2 3
? 0 0 0
! 1 3 4

注記

サンプルのやり取りの説明: $N = 3$ クエリ ? 1 2 3:$B = (1, 2, 3)$、$C = (1 \oplus 1, 3 \oplus 2, 4 \oplus 3) = (0, 1, 7)$、$S = \{0, 1, 6, 7\}$、答えは $4$ です。 クエリ ? 0 0 0:$B = (0, 0, 0)$、$C = (1 \oplus 0, 3 \oplus 0, 4 \oplus 0) = (1, 3, 4)$、$S = \{0, 1, \dots, 7\}$、答えは $8$ です。 出力 ! 1 3 4:隠された数列は $A = (1, 3, 4)$ です。

ローカルテスト

Files セクションには、サンプルテストとグレーダー grader.cpp を含む B.zip があります。解答をテストするには、コンパイルしてから、テスト名と実行可能ファイルをコンパイル済みの ./grader に渡してください。

./grader [test] [executable]

例:./grader 0b.in ./abc

サンプルグレーダーは公式のものと完全に同じように動作するとは限りません。ただし、どちらも適応型(adaptive)ではありません。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.