AT_utpc2024_h Hidden Sequence Rotation

题目描述

本题为**交互式问题**(你的程序将与评测程序通过标准输入输出进行交互)。 给定一个整数 $N$。评测程序隐藏了一个长度为 $N$ 的序列 $A = (A_0, \dots, A_{N-1})$,其中每个元素是 $1$ 到 $10^5$ 之间的整数。请注意,下标从 $0$ 开始。 对于整数 $s=0,\dots,N-1$ 与 $l=1,\dots,N$,定义序列 $A(s, l)$: - 这是一个长度为 $l$ 的序列,第 $i=0,\dots,l-1$ 项为 $A_{(s+i) \bmod N}$。 你可以最多进行 $20$ 次如下格式的询问: - 你需要输出一个由整数对组成的序列 $((s_0,l_0),\dots,(s_{k-1},l_{k-1}))$,且满足 - $1 \leq k \leq N$ - $0 \leq s_i < N$ - $1 \leq l_i \leq N$ - $\sum_{i = 0}^{k - 1} l_i \leq N$ - 对于你的询问,评测程序会返回 $i = 0, \dots, k - 1$ 中所有使得 $A(s_i, l_i)$ 字典序最小的 $i$。即,设 $A_{\mathrm{tmpmin}} = \min_{0 \leq i < k} A(s_i, l_i)$,那么返回集合 $\{i_0, \dots, i_{k'-1}\} \coloneqq \{i \mid 0 \leq i < k, \, A(s_i, l_i) = A_{\mathrm{tmpmin}}\}$。 请通过上述操作,找出所有 $s = 0, \dots, N-1$ 使得 $A(s, N)$ 的字典序最小。即找到集合 $\{s_0, \dots, s_{n-1}\} \coloneqq \{s \mid 0 \leq s < N,\; A(s, N) = A_{\mathrm{min}}\}$,其中 $A_{\mathrm{min}} = \min_{0 \leq s < N} A(s, N)$。

输入格式

本题为交互式问题(你的程序需通过标准输入输出与评测程序交互)。 首先,从标准输入读取 $N$。 ``` N ``` 此后,你可以进行询问,每次按下述格式输出: ``` ? k s_0 l_0 s_1 l_1 ... s_{k-1} l_{k-1} ``` 你的输出必须遵循题目的询问约束条件。 如果查询格式正确,评测程序会以如下格式返回本次询问的结果: ``` k' i_0 i_1 ... i_{k'-1} ``` 且 $0 \le i_0 < \dots < i_{k'-1} < k$。 如果查询格式错误、询问次数超过20次或其它非法情况,评测程序会返回 `-1`: ``` -1 ``` 收到 `-1` 时,程序应立即退出。 当你得出答案后,请按如下格式输出: ``` ! n s_0 s_1 ... s_{n-1} ``` 其中 $s_i$ 需为 $0$ 到 $N-1$ 之间互不相同的整数。

输出格式

见上文,需按题面所述格式进行标准输出。

说明/提示

**注意事项** - **每次输出到标准输出后,请务必刷新输出流。否则有可能因输出未及时被评测程序收到而导致 TLE。** - 若你输出不合法、格式错误,或程序异常退出,判题结果不确定。 - 输出最终答案后(或收到 `-1`),请立即正常退出程序。否则,判题结果不确定。 - 注意不要输出多余的换行,否则也会被认定为格式错误。 - 序列 $A$ 在整个交互过程中固定不变,不会根据你的询问自适应修改。 **输入输出样例** 以 $N=6$,$A=(1, 2, 3, 1, 2, 4)$ 为例: 输入 输出 说明 6 ? 3 0 1 1 1 3 1 查询 $A(0, 1) = (1), A(1, 1) = (2), A(3, 1) = (1)$ 2 0 2 $0$ 和 $2$ 号是最小的 ? 2 0 3 3 3 查询 $A(0, 3) = (1, 2, 3), A(3, 3) = (1, 2, 4)$ 1 0 只有第 $0$ 号最小 ! 1 0 $A(s, N)$ 字典序最小的 $s$ 只有 $0$,输出结果 # 提示 - 所有输入均为整数。 - $1 \leq N \leq 10^5$。 由 ChatGPT 5 翻译