AT_tupc2022_l Inversion High and Low

题目描述

**本题为交互题。** 我们将 $ (1,2,\cdots,N) $ 的排列称为长度为 $ N $ 的排列。 给定一个长度为 $ N $ 的排列 $ P=(P_1, P_2, \cdots, P_N) $。 对于长度为 $ N $ 的两个排列 $ P,Q $,定义 $ \mathrm{dist}(P,Q) $ 如下: - 使 $ P $ 与 $ Q $ 完全一致所需的最少相邻元素交换次数 你最多可以进行 **$ 500 $ 次** 询问,每次询问的形式如下: - 指定一个长度为 $ N $ 的排列 $ Q $。裁判会依据以下规则给出一个字符作为回复: - 如果这是第 $ 1 $ 次询问,则输出“`=`”。 - 若上一次你询问的排列为 $ Q_1 $,本次为 $ Q_2 $, 根据 $ \mathrm{dist}(P,Q_1) $ 与 $ \mathrm{dist}(P,Q_2) $ 的大小关系,裁判会输出“`+`”、“`-`”或“`=`”: - 若 $ \mathrm{dist}(P,Q_1) < \mathrm{dist}(P,Q_2) $,输出“`+`” - 若 $ \mathrm{dist}(P,Q_1) > \mathrm{dist}(P,Q_2) $,输出“`-`” - 若 $ \mathrm{dist}(P,Q_1) = \mathrm{dist}(P,Q_2) $,输出“`=`” 请你确定长度为 $ N $ 的排列 $ P $。 注意,输出最终答案时,不计入提问次数。

输入格式

**本题为交互题。** 首先,输入一个正整数 $ N $。 > $ N $ 之后你可以进行询问。每次询问,你需要输出如下格式,记得以换行结尾: > ? $ Q_1 $ $ Q_2 $ $\dots$ $ Q_N $ 若询问合法,裁判会返回一个字符 $ c $ 作为回应: > $ c $ 如果询问格式不对、超过最大询问次数等,会返回 `F`,表示询问非法。 ``` F ``` 此时评测程序立即终止,并判定答案错误。 当你确定了排列 $ P $,请用如下格式输出答案,以换行结尾: > ! $ P_1 $ $ P_2 $ $\dots$ $ P_N $ 输出答案后,无论答案正误,评测程序均会结束。

输出格式

说明/提示

### 注意事项 - 每次输出后都要刷新标准输出缓冲区(flush)。 ### 输入输出样例 以下为 $ N=4, P=(1,2,3,4) $ 的对话示例: | 输入 | 输出 | 说明 | | :---: | :---: | :------ | | `4` | | 首先给出整数 $ N $。 | | | `? 1 2 4 3` | 指定 $ Q=(1,2,4,3) $ 作为询问。| | `=` | | 第一次询问,一定给出 `=`。此时 $ \mathrm{dist}(P,Q) = 1 $。| | | `? 1 4 2 3` | 指定 $ Q=(1,4,2,3) $ 作为询问。| | `+` | | 此时 $ \mathrm{dist}(P,Q) = 2 $,由于 $ \mathrm{dist}(P,Q_1) < \mathrm{dist}(P,Q_2) $,返回 `+`。| | | `? 2 3 1 4` | 指定 $ Q=(2,3,1,4) $ 作为询问。| | `=` | | 此时 $ \mathrm{dist}(P,Q) = 2 $,因 $ \mathrm{dist}(P,Q_1) = \mathrm{dist}(P,Q_2) $,返回 `=`。| | | `! 1 2 3 4` | 输出排列 $ P $。实际 $ P=(1,2,3,4) $,因此判定正确。| # 提示 - $ 2 \leq N \leq 100 $ - $ N $ 为整数 - $ P $ 在评测开始前已确定 由 ChatGPT 5 翻译