#P11490. [BalticOI 2023] Staring Contest

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

[BalticOI 2023] Staring Contest

题目描述

这是一道交互题。

有一个长度为 nn 的正整数序列 a1,a2,⋯ ,ana_1,a_2,\cdots,a_n,它们两两不同。每次询问你可以给定正整数 1≤i,j≤n1\le i, j\le n,其中 i≠ji\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,有 bi≤aib_i\le a_i,且最多有一个 ii 满足 bi≠aib_i\neq a_i。

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

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

【交互格式】

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

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

每次询问后,你需要从标准输入中读入一个正整数,表示 min⁡(ai,aj)\min(a_i,a_j) 的值。你可以询问不超过 3 0003\,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\% 的数据,2≤n≤1 5002\le n\le 1\,500,1≤ai≤86 4001\le a_i\le 86\,400,aia_i 两两不同。

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

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

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