AT_kupc2024_l Long Street

题目描述

本题为**交互式**题目,且**评测器为自适应(adaptive)**。详细内容请参见提示部分。 有 $N$ 个点,编号分别为 $1$ 到 $N$,这些点按顺序排列在数轴上。对于每个 $i$ 满足 $1\le i\le N-1$,点 $i$ 与点 $i+1$ 之间的距离为 $2^{P_i}$。$N$ 和 $P$ 由输入给出。 评测程序会隐藏一个 $1\le x\le N$,你可以进行以下操作来提问: - 选择一个整数 $i$,$1\le i\le N$,询问在所有 $N$ 个点中,第 $i$ 个点距离隐藏点 $x$ 的距离是第几近(按距离排序)。注意,距离排名为 $1$ 表示最近,例如 $i=x$ 时,排名为 $1$。 你需要在不超过 $\lfloor\log_2 N\rfloor$ 次提问内,确定 $x$ 的值。

输入格式

本题为交互题。 首先,你需要从标准输入读取 $N$ 和 $P$。 > $N$ > $P_1\ P_2\ \dots\ P_{N-1}$ 接下来,重复提问直到能够唯一确定 $x$。每一次提问,请按下述格式输出到标准输出: > ? $i$ 这里 $i$ 必须满足 $1\le i\le N$。你会收到如下格式的评测器响应(通过标准输入读取): > $r$ 这里 $r$ 是本次提问的答案。如果提问不合法,或提问次数超过 $\lfloor\log_2 N\rfloor$,则 $r$ 等于 `-1`。 如果收到 `-1`,说明你已经被判为不正确,此时请立即停止程序。 一旦你唯一确定了 $x$,请以如下格式输出你的答案: > ! $x$ 随后请立即退出程序。

输出格式

无额外输入/输出格式要求,交互格式详见输入格式。

说明/提示

## 注意事项 - **每次输出后必须加上换行,并刷新输出缓冲区。** 如果没有这么做,你可能会被判为 TLE 或 WA。 - 输出答案或收到 `-1` 响应后,应立即结束程序。否则,评测结果不可预测。 - 不要输出多余的换行,否则会被视为输出格式不正确。 - **本题的评测器为自适应(adaptive)。** 也就是说,在任何时刻,只要不与已有提问结果矛盾,评测器会动态选择 $x$ 的值,详情见下方样例。 ## 输入输出样例 例如输入 $N=4, P=(2,1,3)$,初始时评测器假定 $x=2$。 输入 输出 说明 4 2 1 3 输入 $N,P$。 ? 4 提问 $i=4$。 4 回答为 $4$。 ? 1 提问 $i=1$。 3 回答为 $3$。 ! 2 输出你的答案 $x=2$。 事实上,评测器在你给出答案前,可以将 $x$ 从 $2$ 改为 $3$ 以保证和所有历史问答相符。因此可能即使回答正确也不一定被判对。 ## 数据范围 - $2\le N\le 2\times 10^5$ - $N$ 为整数 - $P$ 为 $1,2,\dots,N-1$ 的一个排列 由 ChatGPT 5 翻译