Universal Cup Judging System

Universal Cup

Time Limit: 3 s Memory Limit: 2048 MB Total points: 100 Difficulty: [show] Interactive Hackable ✓
Statistics

Ini adalah soal interaktif. Ingatlah untuk mengosongkan buffer keluaran setiap kali mencetak. Kamu dapat menggunakan:

  • fflush(stdout) atau cout.flush() dalam C/C++;
  • System.out.flush() dalam Java dan Kotlin;
  • sys.stdout.flush() dalam Python;
  • Lihat dokumentasi untuk bahasa lainnya.

Little Cyan Fish memiliki permutasi rahasia $p_0,p_1,\ldots,p_n$ sepanjang $n+1$, yang terdiri dari bilangan bulat dari $0$ hingga $n$. Ia ingin kamu menebak permutasi rahasia tersebut. Untuk itu, Little Cyan Fish mengizinkanmu melakukan paling banyak $1024$ kueri berbentuk berikut:

  • ? i j: Dapatkan indeks $k$ ($0\le k\le n$) sehingga $p_k=|p_i-p_j|$.

Tentu saja, agar kueri valid, kamu harus menjamin bahwa $i$ dan $j$ adalah dua bilangan bulat dalam $[0,n]$. Sebagai contoh, jika $p_0=2,p_1=0,p_2=1$, kueri ? 0 2 akan memberikan indeks $2$ karena $|p_0-p_2|=|2-1|=1=p_2$.

Little Cyan Fish ingin kamu merancang strategi untuk menemukan permutasi. Tentu saja, ia tidak ingin kamu memenangkan permainan terlalu mudah. Karena itu, ia akan mengubah permutasi $p$ secara adaptif untuk menjebakmu (lihat “Interaksi” untuk perincian lebih lanjut).

Masukan

Terdapat beberapa kasus uji. Baris pertama masukan berisi sebuah bilangan bulat $T$ ($1\le T\le100$), yang menyatakan jumlah kasus uji.

Untuk setiap kasus uji, baris pertama masukan berisi sebuah bilangan bulat $n$ ($1\le n\le1000$). Kemudian, interaksi dimulai.

Interaksi

Untuk membuat kueri, cetak satu baris dengan format berikut:

$$?\ i\ j$$

Di sini $i$ dan $j$ adalah dua bilangan bulat dari $0$ hingga $n$. Kamu harus memastikan jumlah kueri tidak melebihi $1024$. Sebagai tanggapan, kamu akan menerima bilangan bulat $k$ sehingga $p_k=|p_i-p_j|$.

Untuk melaporkan jawaban, cetak satu baris dengan format berikut:

$$!\ p_0\ p_1\ \ldots\ p_n$$

Di sini $p$ adalah permutasi yang ingin kamu laporkan.

Setelah mencetak kueri atau melaporkan jawaban, jangan lupa mencetak karakter baris baru dan mengosongkan aliran keluaran.

Dalam soal ini, interaktor bersifat adaptif. Artinya, permutasi $p$ dapat berubah tergantung pada kuerimu, asalkan tidak bertentangan dengan kueri sebelumnya.

Contoh

Contoh Interaksi 1

Baca:

1
3

Tulis:

? 2 2

Baca:

1

Tulis:

? 0 3

Baca:

3

Tulis:

! 2 0 3 1

Alat Pengujian: Sebuah alat disediakan untuk membantu peserta mengembangkan dan menguji solusi. Kamu dapat mengunduh alat ini dari lampiran. Menjalankannya dengan opsi -h seharusnya menjelaskan cara penggunaannya. Alat pengujian hanya mengimplementasikan sebagian skenario pengujian dan sebagian fungsi program penilai sebenarnya.

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.