Universal Cup Judging System

Universal Cup

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

이 문제는 인터랙티브 문제입니다.

Little Cyan Fish는 $1$부터 $n$까지 번호가 매겨진 $n$개의 정점으로 이루어진 숨겨진 단순 무방향 그래프를 가지고 있습니다. 당신은 $n$의 값은 알고 있지만, 간선에 대해서는 전혀 알지 못합니다. Little Cyan Fish는 컷(cut)이라는 개념을 매우 좋아합니다. 정점 집합 $S$에 대하여, $\operatorname{cut}(S)$를 양 끝점 중 정확히 하나만 $S$에 속하는 간선의 개수로 정의합시다.

problem_22880_c88365aab9e24b99bbd5b96995883b80.png

Little Cyan Fish는 당신이 질의를 통해 컷의 크기를 비교하는 것을 허용합니다. 한 번의 질의에서 당신은 두 정점 집합 $S_1$과 $S_2$를 선택합니다. 그러면 Little Cyan Fish는 $\operatorname{cut}(S_1)$이 $\operatorname{cut}(S_2)$보다 작은지, 같은지, 아니면 큰지를 알려줍니다.

아마도 다음에는 그래프를 복원하는 이야기가 나올 것이라고 예상할 수 있겠지만, 이번에는 과제가 더 쉽습니다. Little Cyan Fish는 당신에게 정점 $u$를 하나 주며, 당신이 최대 $n + 10$번의 질의 안에 $u$와 인접한 모든 정점을 찾아내기를 원합니다.

입력

입력의 첫 번째 줄에는 정점의 개수와 주어진 정점을 각각 나타내는 두 정수 $n$과 $u$ ($1 \le n \le 1000$, $1 \le u \le n$)가 주어집니다. 그 후 인터랙션이 시작됩니다.

인터랙션

질의를 하려면 다음 형식으로 한 줄을 출력하세요:

$$?\ s_1\ s_2$$

여기서 $s_1$과 $s_2$는 문자 0과 1로만 이루어진 길이 $n$의 문자열입니다. 각 $j \in \{1, 2\}$에 대하여, 정점 $i$가 $S_j$에 속할 필요충분조건은 $s_j$의 $i$번째 문자가 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)하는 것을 잊지 마세요. 올바르지 않은 질의를 하거나 질의 횟수 제한을 초과하면 인터랙터가 입력 스트림을 닫으며, 당신의 프로그램은 즉시 종료되어야 합니다.

이 문제에서 인터랙터는 적응형(adaptive)입니다. 즉, 이전의 어떤 응답과도 모순되지 않는 한, 당신의 질의에 따라 그래프가 바뀔 수 있습니다. 당신의 정답은 지금까지 받은 모든 응답과 부합하는 모든 그래프에 대해 올바른 답이어야 합니다.

예제

입력 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.