#P14227. [ICPC 2024 Kunming I] 排列

    ID: 14083 Type: RemoteJudge 4000ms 1024MiB Tried: 0 Accepted: 0 Difficulty: 6 Uploaded By: Tags>2024交互题Special JudgeICPC昆明

[ICPC 2024 Kunming I] 排列

题目描述

这是一道交互题。

有一个隐藏的 nn 的排列。请回忆:nn 的排列指的是一个序列,从 11nn(含两端)的每个整数在序列中都恰好出现一次。Piggy 准备通过若干次询问找出这个隐藏的排列。

每次询问包含一个长度为 nn 的整数序列(可以不是排列),每个元素的取值范围从 11nn(含两端)。每次询问之后,Piggy 会收到一个答案 xx,表示他询问的序列中,有几个位置和隐藏的排列相同。例如,假设隐藏的排列是 {1,3,4,2,5}\{1, 3, 4, 2, 5\},Piggy 询问的序列是 {2,3,5,2,5}\{2, 3, 5, 2, 5\},那么他将收到 33 作为回答。

然而 Piggy 最近太忙了,所以他把问题交给了您。您需要在 66666666 次询问内找出这个排列。

输入格式

每个测试文件仅有一组测试数据。

第一行输入一个整数 nn1n1031 \le n \le 10^3),表示隐藏的排列的长度。

交互格式

要提出询问,请输出一行。首先输出一个 0\texttt{0},之后跟一个空格,然后输出 nn 个范围在 11nn 之间的整数,整数之间由单个空格分隔。在清空输出缓冲区之后,您的程序需要读入一个整数 xx,表示对您的询问的回答。

要猜想排列,请输出一行。首先输出一个 1\texttt{1},之后跟一个空格,然后输出一个 nn 的排列,整数之间由单个空格分隔。在清空输出缓冲区之后,您的程序应该立即退出。

请注意,每组测试数据的答案都是预先确定的。也就是说,裁判程序并不是适应性的。还请注意,猜想排列不算一次询问。

清空输出缓冲区可以使用以下方式:

  • C 和 C++ 使用 fflush(stdout)\texttt{fflush(stdout)}(如果您使用 printf\texttt{printf})或 cout.flush()\texttt{cout.flush()}(如果您使用 cout\texttt{cout})。
  • Java 使用 System.out.flush()\texttt{System.out.flush()}
  • Python 使用 stdout.flush()\texttt{stdout.flush()}
5

3

4

2


0 3 1 3 2 2

0 3 1 5 2 2

0 3 5 4 4 4

1 3 1 5 2 4

提示

请注意,如果您收到了 Time Limit Exceeded 的评测结果,有可能是因为您的询问不合法,或您的询问次数超出了限制。