题目描述
这是一道交互题。
有一个长度为 n 的正整数序列 a1,a2,⋯,an,它们两两不同。每次询问你可以给定正整数 1≤i,j≤n,其中 i=j,交互库会告诉你 min(ai,aj)。
你需要确定序列 a。然而,显然最大的 ai 是无法确定的,因此你只需求出一个整数序列 b1,b2,⋯,bn,满足对于所有 i=1,2,⋯,n,有 bi≤ai,且最多有一个 i 满足 bi=ai。
(搬题人注:你还需保证 bi 在 [−231,231) 中。)
交互库不是自适应的。换而言之,序列 a 在交互前已确定。
【交互格式】
首先选手程序读入一行一个正整数 n。
接下来选手可以进行若干次询问,每次询问形如 ? i j,其中 i,j 为满足 1≤i,j≤n 且 i=j 的正整数。
每次询问后,你需要从标准输入中读入一个正整数,表示 min(ai,aj) 的值。你可以询问不超过 3000 次。
如果你确定了你要回答的序列 b,则输出一行 ! b1 b2 ⋯ bn 表示你的回答。回答不计做询问。
每次询问后,你需要清空缓冲区。
输入格式
见「交互格式」。
输出格式
见「交互格式」。
3
431
121
121
? 1 2
? 1 3
? 2 3
! 431 431 121
提示
【样例解释】
一个可能的 a 为 [431,623,121]。
【数据范围】
对于 100% 的数据,2≤n≤1500,1≤ai≤86400,ai 两两不同。
子任务编号 |
分值 |
特殊限制 |
1 |
9 |
n≤50 |
2 |
11 |
n≤1000 |
3 |
80 |
1000<n≤1500 |
对于前两个子任务,你将获得满分当且仅当你正确的解决了该子任务中的每一个测试点,否则将获得零分。
对于第三个子任务,你的得分为其所有测试点的最低分。其中,对于每个测试点,如果你的程序没有正确解决这个测试点,你将获得 0 分。否则,设你询问了 q 次。若 q≤n+25,你将获得 80 分。若 q>3000,你将获得 0 分。否则,你将获得 118.2−12ln(q−n) 分,四舍五入至最近的整数。