QOJ.ac

QOJ

Límite de tiempo: 2 s Límite de memoria: 1024 MB Puntuación total: 100 Interactivo Hackeable ✓

#18515. 游戏:光标最小

Estadísticas

这是一个交互式问题。

隐藏着一个长度为 $n=30000$ 的排列 $p$。你的任务是找出这个排列中最小值所在的下标。

评测器是非自适应的:排列在交互开始前确定,并且之后不会改变。

与普通的比较查询不同,评测器只会将你当前的查询与前一次查询进行比较。具体来说,如果你上一次查询的下标是 $i$,现在你查询下标 $j$,评测器会告诉你 $p_i$ 与 $p_j$ 的比较结果。

你最多可以进行 $q_{\max}=42000$ 次查询。

官方评测数据包含 100 个独立的测试文件。你的程序会独立地在每个文件上运行。

交互

在交互开始时,你的程序必须读入两个整数

$$ n \quad q_{\max}. $$

对于官方测试,$n=30000$,$q_{\max}=42000$。

要发起一次查询,请按以下格式输出一行:

$$ \text{? j} $$

其中 $1 \le j \le n$。

评测器会回复一个字符:

  • < 如果 $p_i < p_j$,其中 $i$ 表示上一次查询的下标(如果存在);
  • = 如果这是第一次查询,或者 $p_i = p_j$;
  • > 如果 $p_i > p_j$,其中 $i$ 表示上一次查询的下标(如果存在)。

由于 $p$ 是一个排列,在第一次查询之后,只有当你查询的下标与上一次查询的下标相同时,才会收到回复 =

如果评测器回复 -1,你的程序必须立即终止。这意味着你的程序违反了交互协议,将会得到 Wrong Answer。

要给出最终答案,请按以下格式输出一行:

$$ \text{! a} $$

其中 $a$ 是你认为包含最小值的下标。输出答案后,你的程序必须终止。最终答案不计入查询次数

如果你的程序进行的查询次数超过 $q_{\max}$,查询了无效的下标,输出了无效的命令,或者输出了错误的最终答案,将会得到 Wrong Answer。

每次输出查询或答案后,请刷新输出缓冲区。例如,在 C++ 中可以使用 endlcout.flush()

说明

本样例仅用于展示交互过程,不会出现在实际测试数据中。形式为 (receiving ... output) 的行是占位符,用于在对齐样例中的查询和评测器回复。在实际测试中,评测器不会输出这些占位行,选手也不应该读入或打印它们。

在此样例交互中,隐藏的排列为 $p=(3,1,4,2)$。下面的项目符号描述了样例中展示的交互过程。

  • 评测器首先发送 $n=4$ 和查询上限 $5$。
  • 第一次查询 ? 1 收到 =,因为之前没有查询过的下标。
  • 查询 ? 2 比较 $p_1=3$ 与 $p_2=1$,所以评测器回复 >
  • 查询 ? 4 比较 $p_2=1$ 与 $p_4=2$,所以评测器回复 <。最小值在下标 $2$ 处,因此 ! 2 是正确的。

本地交互工具: 附件的 attachments/local_interactive.py 可以通过 --perm 3,1,4,2 --limit 5 来复现这个本地环境,但通过它并不保证能通过官方评测数据。

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.