Universal Cup Judging System

Universal Cup

حد الوقت: 1 s حد الذاكرة: 2048 MB مجموع النقاط: 100 الصعوبة: [عرض] تفاعلية قابلة للهجوم ✓
الإحصائيات

Это интерактивная задача.

У Маленькой Циановой Рыбки есть скрытый простой неориентированный граф с $n$ вершинами, пронумерованными от $1$ до $n$. Вам известно значение $n$, но вы не знаете ни одного ребра. Маленькая Циановая Рыбка очень любит понятие разреза (cut). Для множества вершин $S$ обозначим через $\operatorname{cut}(S)$ количество рёбер, у которых ровно один конец принадлежит $S$.

problem_22880_c88365aab9e24b99bbd5b96995883b80.png

Маленькая Циановая Рыбка позволяет вам сравнивать разрезы с помощью запросов. В одном запросе вы выбираете два множества вершин $S_1$ и $S_2$. Маленькая Циановая Рыбка сообщает вам, является ли величина $\operatorname{cut}(S_1)$ меньшей, равной или большей, чем $\operatorname{cut}(S_2)$.

Вы, вероятно, можете предсказать, что дальше речь пойдёт о восстановлении графа, но на этот раз задача проще. Маленькая Циановая Рыбка даёт вам вершину $u$ и хочет, чтобы вы нашли все вершины, смежные с $u$, не более чем за $n + 10$ запросов.

Входные данные

Первая строка входных данных содержит два целых числа $n$ и $u$ ($1 \le n \le 1000$, $1 \le u \le n$), обозначающих количество вершин и данную вершину соответственно. Затем начинается взаимодействие.

Протокол взаимодействия

Чтобы сделать запрос, выведите строку в следующем формате:

$$?\ s_1\ s_2$$

где $s_1$ и $s_2$ — строки длины $n$, состоящие только из символов 0 и 1. Для каждого $j \in \{1, 2\}$ вершина $i$ принадлежит $S_j$ тогда и только тогда, когда $i$-й символ строки $s_j$ равен 1. Множества могут быть пустыми, могут пересекаться и могут совпадать.

В качестве ответа на запрос вы получите один символ <, = или >, означающий, что величина $\operatorname{cut}(S_1)$ меньше, равна или больше $\operatorname{cut}(S_2)$ соответственно. Вы должны гарантировать, что количество сделанных вами запросов не превышает $n + 10$.

Чтобы сообщить ответ, выведите строку в следующем формате:

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

где $k$ ($0 \le k \le n - 1$) — количество вершин, смежных с $u$, а $v_1, v_2, \ldots, v_k$ — их различные номера в любом порядке. Если $k = 0$, выведите ! 0. Вывод ответа не считается запросом. Ваша программа должна немедленно завершиться после вывода ответа.

После вывода запроса или ответа не забудьте вывести символ перевода строки и сбросить буфер вывода (flush). Если вы сделаете некорректный запрос или превысите лимит запросов, интерактор закроет входной поток, и ваша программа должна завершиться.

В этой задаче интерактор является адаптивным. Это означает, что граф может меняться в зависимости от ваших запросов, пока это не противоречит ни одному из предыдущих ответов. Ваш ответ должен быть правильным для любого графа, согласующегося со всеми полученными вами ответами.

Примеры

Входные данные 1

4 1

<

=

<

=

Выходные данные 1

? 0000 1000

? 0100 1100

? 0010 1010

? 0001 1001

! 2 2 4

Примечание

Один из графов, согласующихся с примером взаимодействия, содержит рёбра $(1, 2)$, $(1, 4)$ и $(2, 3)$.

problem_22880_2dcb0fb296e7aa6b2806ae2a9f6861fe.png

Инструмент для тестирования: Для помощи участникам в разработке и тестировании решений предоставляется инструмент для тестирования. Вы можете скачать этот инструмент из вложений. Запустите инструмент с опцией -h, чтобы отобразить инструкции по использованию. Инструмент проверяет взаимодействие и выведенный ответ, но не контролирует ограничения по времени или памяти.

Инструмент для тестирования использует фиксированный граф, заданный в его входном файле, на протяжении всего взаимодействия, тогда как официальный интерактор является адаптивным. Прохождение тестов с помощью инструмента для тестирования не гарантирует, что ваше решение будет верным при проверке официальным интерактором.

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.