凝视比赛是一种经典的心理素质较量,两名选手通过凝视对方的眼睛,同时保持面部表情的镇定自若。比赛的目标是比对手坚持更久的眼神接触。当一名选手失去镇定(通常表现为移开视线、微笑、说话或咯咯笑)时,比赛结束。
作为国家凝视比赛的教练,你需要确定你队伍中 $n$ 名成员在即将到来的世界总决赛中的心理素质。第 $i$ 名选手可以保持眼神接触恰好 $a_i$ 秒,但这些数值起初对你来说是未知的。例如,你可能有一个 $n = 3$ 人的队伍:
| $i$ | 姓名 | $a_i$ |
|---|---|---|
| 1 | Anna | 431 |
| 2 | Esther | 623 |
| 3 | Tony | 121 |
当选手 $i$ 和 $j$ 进行比赛时,对峙持续的时间恰好为 $\min(a_i, a_j)$ 秒,此时较弱的选手会失去镇定,两名选手会在不到一秒的时间内开始微笑和咯咯笑。例如,如果 Anna 与 Esther 比赛,比赛持续 431 秒。重要的是,对于外部观察者来说,无法确定对峙的实际胜者(在本例中是 Esther),只能测量比赛的持续时间。
你的目标是使用尽可能少的凝视比赛来估计数值 $a_1, \dots, a_n$。显然,最强选手的实力永远无法确定,因此允许你低估其中一个 $a_i$。
交互
这是一个交互式问题。交互开始时,你需要读取包含整数 $n$ 的单行。然后你可以询问形式为 “? $i$ $j$” 的查询,其中 $1 \le i \le n$,$1 \le j \le n$ 且 $i \neq j$。查询的响应是一个整数:值 $\min(a_i, a_j)$。交互以你打印一行以 ! 开头,后跟 $n$ 个整数估计值 $b_1, \dots, b_n$(以空格分隔)结束。这必须是你输出的最后一行。
如果对于除一个选手外的每一位选手 $i$,都有 $b_i = a_i$,则你的提交是正确的,你可以低估那一个选手的数值。准确地说,我们要求对于所有 $1 \le i \le n$ 都有 $b_i \le a_i$,并且允许至多有一个 $k$ 使得 $b_k \neq a_k$。
交互器是非自适应的,这意味着 $a_1, \dots, a_n$ 在交互开始前就已经确定。
数据范围
选手人数 $n$ 满足 $2 \le n \le 1500$。每位选手的心理素质 $a_i$ 满足 $1 \le a_i \le 86\,400$,且它们各不相同。你最多可以使用 3000 次查询;你输出的最后一行(即以 ! 开头的那一行)不计入查询次数。
你的解法将在多组测试数据上进行测试,每组测试数据都有相应的分值。每个测试组包含一组测试用例。要获得测试组的分数,你需要解决该组中的所有测试用例。你的最终得分为单次提交所获得的最高分数。
对于第 3 组,你的得分是该组所有测试用例中的最低得分。每个测试用例的得分取决于你使用的查询次数;查询次数越少越好:假设你使用了 $q$ 次查询。如果 $q \le n + 25$,则你获得满分 80 分。如果 $q > 3000$,则你不得分。否则,你获得 $118.2 - 12 \cdot \ln(q - n)$ 分,四舍五入到最接近的整数。例如,对于 $n = 1500$ 和 $q = 3000$,你获得 30 分。
| 组别 | 分数 | 数据范围 |
|---|---|---|
| 1 | 9 | $n \le 50$ |
| 2 | 11 | $n \le 1000$ |
| 3 | 0–80 | $1000 < n \le 1500$ |
交互样例说明
样例交互 1 展示了使用上述示例的一种可能的交互过程。注意 Anna 和 Tony 的实力被正确确定了。(Esther 的实力永远无法确定。)
| Read | Write |
|---|---|
| 3 | |
| ? 1 2 | |
| 431 | |
| ? 1 3 | |
| 121 | |
| ? 3 2 | |
| 121 | |
| ! 431 431 121 |