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 翻译