Universal Cup Judging System

Universal Cup

時間限制: 1 s 記憶體限制: 2048 MB 總分: 100 难度: [顯示] 互動 可 Hack ✓
统计

Ini adalah soal interaktif.

Little Cyan Fish memiliki sebuah graf tak berarah sederhana tersembunyi dengan $n$ verteks, yang diberi label dari $1$ hingga $n$. Anda mengetahui nilai $n$, tetapi Anda tidak mengetahui satu pun sisinya. Little Cyan Fish sangat menyukai konsep potongan (cut). Untuk suatu himpunan verteks $S$, misalkan $\operatorname{cut}(S)$ menyatakan banyaknya sisi yang memiliki tepat satu titik ujung di $S$.

problem_22880_c88365aab9e24b99bbd5b96995883b80.png

Little Cyan Fish mengizinkan Anda membandingkan potongan dengan mengajukan kueri. Dalam satu kueri, Anda memilih dua himpunan verteks $S_1$ dan $S_2$. Little Cyan Fish memberi tahu Anda apakah $\operatorname{cut}(S_1)$ lebih kecil dari, sama dengan, atau lebih besar dari $\operatorname{cut}(S_2)$.

Anda mungkin dapat menebak bahwa kalimat berikutnya akan membahas tentang memulihkan graf tersebut, tetapi kali ini tugasnya lebih mudah. Little Cyan Fish memberi Anda sebuah verteks $u$, dan ia ingin Anda menemukan semua verteks yang bertetangga dengan $u$ dalam paling banyak $n + 10$ kueri.

Masukan

Baris pertama dari masukan berisi dua bilangan bulat $n$ dan $u$ ($1 \le n \le 1000$, $1 \le u \le n$), yang masing-masing menyatakan banyaknya verteks dan verteks yang diberikan. Kemudian, interaksi dimulai.

Protokol Interaksi

Untuk mengajukan kueri, cetak satu baris dengan format berikut:

$$?\ s_1\ s_2$$

dengan $s_1$ dan $s_2$ adalah string sepanjang $n$, yang hanya terdiri dari karakter 0 dan 1. Untuk setiap $j \in \{1, 2\}$, verteks $i$ termasuk dalam $S_j$ jika dan hanya jika karakter ke-$i$ dari $s_j$ adalah 1. Himpunan-himpunan tersebut boleh kosong, boleh saling beririsan, dan boleh sama.

Sebagai respons terhadap kueri tersebut, Anda akan mendapatkan satu karakter <, =, atau >, yang masing-masing berarti bahwa $\operatorname{cut}(S_1)$ lebih kecil dari, sama dengan, atau lebih besar dari $\operatorname{cut}(S_2)$. Anda harus memastikan bahwa banyaknya kueri yang Anda ajukan tidak melebihi $n + 10$.

Untuk melaporkan jawaban, keluarkan satu baris dengan format berikut:

$$!\ k\ v_1\ v_2\ \dots\ v_k$$

dengan $k$ ($0 \le k \le n - 1$) adalah banyaknya verteks yang bertetangga dengan $u$, dan $v_1, v_2, \ldots, v_k$ adalah label-label berbeda mereka dalam urutan apa pun. Jika $k = 0$, keluarkan ! 0. Melaporkan jawaban tidak dihitung sebagai kueri. Program Anda harus segera berhenti setelah melaporkan jawaban.

Setelah mengeluarkan kueri atau melaporkan jawaban, jangan lupa untuk mengeluarkan karakter baris baru (newline) dan melakukan flush pada aliran keluaran. Jika Anda mengajukan kueri yang tidak valid atau melebihi batas kueri, interaktor akan menutup aliran masukan dan program Anda harus berhenti.

Pada soal ini, interaktor bersifat adaptif. Artinya, graf dapat berubah tergantung pada kueri Anda, selama tidak bertentangan dengan respons sebelumnya. Jawaban Anda harus benar untuk setiap graf yang konsisten dengan semua respons yang telah Anda terima.

Contoh

Masukan 1

4 1

<

=

<

=

Keluaran 1

? 0000 1000

? 0100 1100

? 0010 1010

? 0001 1001

! 2 2 4

Catatan

Salah satu graf yang konsisten dengan interaksi contoh memiliki sisi $(1, 2)$, $(1, 4)$, dan $(2, 3)$.

problem_22880_2dcb0fb296e7aa6b2806ae2a9f6861fe.png

Alat Penguji: Sebuah alat penguji disediakan untuk membantu peserta mengembangkan dan menguji solusi mereka. Anda dapat mengunduh alat ini dari lampiran. Jalankan alat tersebut dengan opsi -h untuk menampilkan petunjuk penggunaan. Alat ini memeriksa interaksi dan jawaban yang dilaporkan, tetapi tidak memberlakukan batas waktu maupun batas memori.

Alat penguji menggunakan graf tetap yang ditentukan dalam berkas masukannya selama interaksi berlangsung, sedangkan interaktor resmi bersifat adaptif. Lulus pengujian dengan alat penguji tidak menjamin bahwa solusi Anda benar terhadap interaktor resmi.

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.