QOJ.ac

QOJ

実行時間制限: 5 s メモリ制限: 512 MB 満点: 100 インタラクティブ

#1813. 순열과 함께하는 즐거움

統計

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

Alice는 비밀리에 첫 $N$개의 정수 $a_1, a_2, \dots, a_N$의 순열을 만들고 Bob에게 $N$을 알려줍니다. Bob은 이 순열을 알아내기 위해 질문을 합니다. Bob은 두 가지 유형의 질문을 할 수 있습니다.

  • 유형 1, 형식: "? 1 i j k": Bob은 서로 다른 세 정수 $i, j, k$ ($1 \le i, j, k \le N$)를 선택합니다. Alice는 세 정수 $a_i, a_j, a_k$를 확인하고 그중 중앙값(최솟값도 최댓값도 아닌 값)을 Bob에게 알려줍니다.
  • 유형 2, 형식: "? 2 i j": Bob은 서로 다른 두 정수 $i, j$ ($1 \le i, j \le N$)를 선택합니다. Alice는 $a_i < a_j$이면 $i$를, 그렇지 않으면 $j$를 답합니다.

이 게임이 Bob에게 너무 쉬워 보였는지, Alice는 새로운 규칙을 만들었습니다. 첫째, Bob은 유형 1 질문을 최대 $2N$번, 유형 2 질문을 최대 2번만 할 수 있습니다. 둘째, Alice는 이전에 주어진 모든 답변과 일치하는 한 순열을 자유롭게 변경할 수 있습니다. Bob이 승리하여 순열을 알아낼 수 있도록 프로그램을 작성하세요.

인터랙션 프로토콜

먼저, 심사위원 프로그램이 한 줄에 정수 $N$ ($4 \le N \le 60\,000$)을 출력합니다. 그다음 질문을 할 수 있습니다.

유형 1 질문은 "? 1 i j k" ($1 \le i, j, k \le N$; $i, j, k$는 서로 다름) 형식의 한 줄입니다. 심사위원 프로그램은 $a_i, a_j, a_k$의 중앙값인 정수 하나를 한 줄에 출력합니다. 이 유형의 질문은 최대 $2N$번까지 할 수 있습니다.

유형 2 질문은 "? 2 i j" ($1 \le i, j \le N$; $i \neq j$) 형식의 한 줄입니다. 심사위원 프로그램은 $a_i < a_j$이면 $i$를, $a_i > a_j$이면 $j$를 정수 하나로 출력합니다. 이 유형의 질문은 최대 2번까지 할 수 있습니다.

순열이 유일하게 결정되면 "! $a_1$ $a_2$ $\dots$ $a_N$" 형식으로 답을 출력합니다. 인터랙션은 적응형(adaptive)이라는 점에 유의하세요. 심사위원 프로그램은 과거의 답변과 일치하는 한 언제든지 순열을 변경할 수 있습니다. 특히, 순열이 아직 유일하게 결정되지 않았는데 답을 추측하려고 하면, 심사위원 프로그램은 즉시 다른 순열을 선택하고 틀렸다고 할 수 있습니다.

질문이나 답을 출력한 후에는 개행 문자를 출력하고 출력 버퍼를 비우는(flush) 것을 잊지 마세요. 그렇지 않으면 "Idleness Limit Exceeded" 오류가 발생할 수 있습니다.

예제

입력 1

5
4
4
2

출력 1

? 1 1 2 3
? 2 2 4
? 1 1 5 4
! 3 5 4 1 2

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.