P14227 [ICPC 2024 Kunming I] 排列
题目描述
这是一道交互题。
有一个隐藏的 $n$ 的排列。请回忆:$n$ 的排列指的是一个序列,从 $1$ 到 $n$(含两端)的每个整数在序列中都恰好出现一次。Piggy 准备通过若干次询问找出这个隐藏的排列。
每次询问包含一个长度为 $n$ 的整数序列(可以不是排列),每个元素的取值范围从 $1$ 到 $n$(含两端)。每次询问之后,Piggy 会收到一个答案 $x$,表示他询问的序列中,有几个位置和隐藏的排列相同。例如,假设隐藏的排列是 $\{1, 3, 4, 2, 5\}$,Piggy 询问的序列是 $\{2, 3, 5, 2, 5\}$,那么他将收到 $3$ 作为回答。
然而 Piggy 最近太忙了,所以他把问题交给了您。您需要在 $6666$ 次询问内找出这个排列。
输入格式
每个测试文件仅有一组测试数据。
第一行输入一个整数 $n$($1 \le n \le 10^3$),表示隐藏的排列的长度。
### 交互格式
要提出询问,请输出一行。首先输出一个 $\texttt{0}$,之后跟一个空格,然后输出 $n$ 个范围在 $1$ 到 $n$ 之间的整数,整数之间由单个空格分隔。在清空输出缓冲区之后,您的程序需要读入一个整数 $x$,表示对您的询问的回答。
要猜想排列,请输出一行。首先输出一个 $\texttt{1}$,之后跟一个空格,然后输出一个 $n$ 的排列,整数之间由单个空格分隔。在清空输出缓冲区之后,您的程序应该立即退出。
请注意,每组测试数据的答案都是预先确定的。也就是说,裁判程序并不是适应性的。还请注意,猜想排列不算一次询问。
清空输出缓冲区可以使用以下方式:
- C 和 C++ 使用 $\texttt{fflush(stdout)}$(如果您使用 $\texttt{printf}$)或 $\texttt{cout.flush()}$(如果您使用 $\texttt{cout}$)。
- Java 使用 $\texttt{System.out.flush()}$。
- Python 使用 $\texttt{stdout.flush()}$。
输出格式
无
说明/提示
请注意,如果您收到了 Time Limit Exceeded 的评测结果,有可能是因为您的询问不合法,或您的询问次数超出了限制。