luogu#P11490. [BalticOI 2023] Staring Contest

    ID: 35359 远端评测题 1000ms 1024MiB 尝试: 0 已通过: 0 难度: (无) 上传者: 标签>2023交互题Special JudgeO2优化BalticOI(波罗的海)

[BalticOI 2023] Staring Contest

题目描述

这是一道交互题

有一个长度为 nn 的正整数序列 a1,a2,,ana_1,a_2,\cdots,a_n它们两两不同。每次询问你可以给定正整数 1i,jn1\le i, j\le n,其中 iji\neq j,交互库会告诉你 min(ai,aj)\min(a_i,a_j)

你需要确定序列 aa。然而,显然最大的 aia_i 是无法确定的,因此你只需求出一个整数序列 b1,b2,,bnb_1,b_2,\cdots,b_n,满足对于所有 i=1,2,,ni=1,2,\cdots,n,有 biaib_i\le a_i,且最多有一个 ii 满足 biaib_i\neq a_i

(搬题人注:你还需保证 bib_i[231,231)[-2^{31},2^{31}) 中。)

交互库不是自适应的。换而言之,序列 aa 在交互前已确定。

【交互格式】

首先选手程序读入一行一个正整数 nn

接下来选手可以进行若干次询问,每次询问形如 ? i j\texttt{?}\ i\ j,其中 i,ji,j 为满足 1i,jn1\le i,j\le niji\neq j 的正整数。

每次询问后,你需要从标准输入中读入一个正整数,表示 min(ai,aj)\min(a_i,a_j) 的值。你可以询问不超过 30003\,000 次。

如果你确定了你要回答的序列 bb,则输出一行 ! b1 b2  bn\texttt{!}\ b_1\ b_2\ \cdots\ b_n 表示你的回答。回答不计做询问。

每次询问后,你需要清空缓冲区。

输入格式

见「交互格式」。

输出格式

见「交互格式」。

3
431
121
121
? 1 2
? 1 3
? 2 3
! 431 431 121

提示

【样例解释】

一个可能的 aa[431,623,121][431,623,121]

【数据范围】

对于 100%100\% 的数据,2n15002\le n\le 1\,5001ai864001\le a_i\le 86\,400aia_i 两两不同。

子任务编号 分值 特殊限制
11 99 n50n\le 50
22 1111 n1000n\le 1\,000
33 8080 1000<n15001\,000<n\le 1\,500

对于前两个子任务,你将获得满分当且仅当你正确的解决了该子任务中的每一个测试点,否则将获得零分。

对于第三个子任务,你的得分为其所有测试点的最低分。其中,对于每个测试点,如果你的程序没有正确解决这个测试点,你将获得 00 分。否则,设你询问了 qq 次。若 qn+25q\le n+25,你将获得 8080 分。若 q>3000q>3\, 000,你将获得 00 分。否则,你将获得 118.212ln(qn)118.2-12\ln(q-n) 分,四舍五入至最近的整数。