AT_arc154_d [ARC154D] A + B > C ?
题目描述
PCT 君有一个 $ (1,2,\dots,N) $ 的排列 $ (P_1,P_2,\dots,P_N) $。你只知道 $ N $ 的值。
你可以向 PCT 君最多询问 $ 25000 $ 次以下的问题:
- 指定满足 $ 1\le i,j,k\le N $ 的整数三元组 $ (i,j,k) $,询问 $ P_i+P_j>P_k $ 是否成立。
请你求出 $ P_1,P_2,\dots,P_N $ 的全部值。
输入格式
**本题为交互题**(你的程序需要与评测程序通过输入输出进行交互)。
首先,你的程序会从标准输入读入排列的长度 $ N $。
> $ N $
之后,你可以进行提问。每次提问需要按如下格式输出到标准输出(末尾需换行):
> ? $ i $ $ j $ $ k $
如果提问合法,将会从标准输入读入该问题的答案 $ ans $。
> $ ans $
其中,$ ans $ 为 `Yes` 或 `No`。
如果你的提问格式有误,或者提问次数超过规定次数,标准输入会返回 `-1`。
```
-1
```
此时,评测程序已判定你的提交为不正确,并会立即结束交互。你的程序也应当立即退出。
当你确定 $ P_1,P_2,\dots,P_N $ 的全部值后,请按如下格式输出答案(末尾需换行):
> ! $ P_1 $ $ P_2 $ $ \dots $ $ P_N $
输出格式
无。
说明/提示
## 限制
- $ 1\le N\le 2000 $
- $ P $ 在程序与评测程序开始交互前已确定。
## 评测说明
- **每次输出后请务必刷新输出缓冲区,否则可能会因 TLE 被判为不正确。**
- 输出答案(或收到 `-1`)后请立即正常退出程序,否则评测结果不确定。
- 多余的换行会被视为输出格式错误。
## 输入输出样例
以下为 $ N=4,P=(3,1,2,4) $ 时的交互示例。
| 输入 | 输出 | 说明 |
|:---:|:---:|:---|
| `4` | | $ N $ 被给出。 |
| | `? 1 2 3` | 第 1 次提问,询问 $ P_1+P_2>P_3 $ 是否成立。 |
| `Yes` | | $ P_1+P_2=4,P_3=2 $,因此返回 `Yes`。 |
| | `? 2 3 3` | 第 2 次提问,询问 $ P_2+P_3>P_3 $ 是否成立。 |
| `Yes` | | $ P_2+P_3=3,P_3=2 $,因此返回 `Yes`。 |
| | `? 2 3 4` | 第 3 次提问,询问 $ P_2+P_3>P_4 $ 是否成立。 |
| `No` | | $ P_2+P_3=3,P_4=4 $,因此返回 `No`。 |
| | `! 3 1 2 4` | 输出 $ P_1,P_2,P_3,P_4 $。实际排列为 $ (3,1,2,4) $,因此 AC。 |
由 ChatGPT 4.1 翻译