QOJ.ac

QOJ

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

#15871. Poetic Tournament

統計

这是一个交互式问题。这意味着你程序的输入将根据你程序的输出而改变。

Väinö 被选为标志性角色诗歌大赛(Iconic Character Poetry Contest, ICPC)的新任主席,这是一场汇聚了全国最优秀、最聪明人才的电视智力与诗歌对决。不幸的是,近年来 ICPC 的受欢迎程度呈爆炸式增长,Väinö 被大批希望展示自己才华的新申请者所包围。

该节目接受申请者的名额有限,Väinö 的任务是确保只有最优秀的申请者才能获得这些名额。他决定举办一场资格赛来决定谁能晋级。在锦标赛中,他每次会邀请两名申请者进行对决,以评估谁的诗歌(或称 runous)水平更高。他确信没有任意两名申请者的水平是相同的。水平具有传递性,也就是说,如果 $a$ 击败了 $b$,且 $b$ 击败了 $c$,那么 $a$ 也一定会击败 $c$。

然而,他的时间有限,他希望限制必须进行的比赛场数,以确定晋级的前几名申请者。你能帮他选择应该进行哪些比赛吗?

交互格式

交互开始时,首先读取两个整数 $N$ 和 $K$,分别代表申请者的总数和晋级的人数。已知 $1 \le N \le 15\,000$ 且 $1 \le K \le \min(N, 30)$。这 $N$ 名申请者从 $1$ 到 $N$ 进行编号。

随后,你最多可以进行 $12N + 1\,000$ 次格式为 ? a b 的询问,其中 $1 \le a, b \le N$ 且 $a \neq b$。这代表在申请者 $a$ 和 $b$ 之间进行一场比赛,交互器将回应 $a$ 或 $b$,表示哪位申请者赢得了比赛(即水平更高)。

请记得在每次询问后清空输出缓冲区(flush)。

cout.flush(); // C++
System.out.flush(); // Java
print(..., flush=True) # Python

如果你进行了超过 $12N + 1\,000$ 次询问,你的提交将获得 Wrong Answer(答案错误)的评测结果。

一旦你确定了水平最高的前 $K$ 名申请者,请以 ! x1 x2 x3 ... xK 的格式输出他们。这前 $K$ 名申请者可以按任意顺序输出。随后你的程序应当退出。

交互器是非适应性(non-adaptive)的,这意味着每位申请者的水平在交互开始前就已经确定,并且在交互过程中不会改变。

除了正确识别出前 $K$ 名申请者外,你的询问还必须证明你的答案是唯一可能的前 $K$ 名申请者集合——如果存在任何漏掉潜在人才的可能性,你将会承受 Väinö 的怒火!例如,在样例中如果仅仅输出 ! 5 3 4 将会获得 Wrong Answer,因为你的询问并没有证明 $\{5, 3, 4\}$ 确实是水平最高的前 3 名。

如果交互器收到任何无效输入,交互器将输出 -1 并立即终止。你的程序应当干净地退出以获得 Wrong Answer 评测结果,否则获得的评测结果可能是任意表示提交错误的非预期结果。

我们为你提供了一个用于本地测试的命令行工具。该工具的顶部有注释解释其使用方法。

样例

输入样例 1

6 3
3
1
5
3
5
4

输出样例 1

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

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.