308843: CF1583D. Omkar and the Meaning of Life

Memory Limit:256 MB Time Limit:2 S
Judge Style:Text Compare Creator:
Submit:0 Solved:0

Description

Omkar and the Meaning of Life

题意翻译

这是一道交互题。 原来生命的意义是一个 $n$ ( $ 2 \leq n \leq 100 $ ) 的排列。 创造了世上所有生命的 Omkar 知道这个排列,他允许你在有限的询问次数内查询出这个排列是什么。 每一次询问你可以给出一个序列 $ a_1, a_2, \ldots, a_n $ ( $1\le a_1,a_2,\ldots,a_n \le n$ ) 来对 Omkar 进行询问。 $ a $ 序列**不一定**要是一个排列。之后 Omkar 会逐个将 $a_i$ 与 $p_i$ 相加得到一个新的序列 $s$ ,即对于每个 $j$ ( $1\le j \le n$ ) ,$ s_j = p_j + a_j $ 。最后 $s$ 序列中可能会出现一些相同的数,你将读入 Omkar 告诉你的**第一个出现相同数的位置**。如果没有相同的数出现,你将读入数字 $0$ 。 你最多只能进行 $2n$ 次询问。

题目描述

It turns out that the meaning of life is a permutation $ p_1, p_2, \ldots, p_n $ of the integers $ 1, 2, \ldots, n $ ( $ 2 \leq n \leq 100 $ ). Omkar, having created all life, knows this permutation, and will allow you to figure it out using some queries. A query consists of an array $ a_1, a_2, \ldots, a_n $ of integers between $ 1 $ and $ n $ . $ a $ is not required to be a permutation. Omkar will first compute the pairwise sum of $ a $ and $ p $ , meaning that he will compute an array $ s $ where $ s_j = p_j + a_j $ for all $ j = 1, 2, \ldots, n $ . Then, he will find the smallest index $ k $ such that $ s_k $ occurs more than once in $ s $ , and answer with $ k $ . If there is no such index $ k $ , then he will answer with $ 0 $ . You can perform at most $ 2n $ queries. Figure out the meaning of life $ p $ .

输入输出格式

输入格式


输出格式


Start the interaction by reading single integer $ n $ ( $ 2 \leq n \leq 100 $ ) — the length of the permutation $ p $ . You can then make queries. A query consists of a single line " $ ? \enspace a_1 \enspace a_2 \enspace \ldots \enspace a_n $ " ( $ 1 \leq a_j \leq n $ ). The answer to each query will be a single integer $ k $ as described above ( $ 0 \leq k \leq n $ ). After making a query do not forget to output end of line and flush the output. Otherwise, you will get Idleness limit exceeded. To do this, use: - fflush(stdout) or cout.flush() in C++; - System.out.flush() in Java; - flush(output) in Pascal; - stdout.flush() in Python; - see documentation for other languages. To output your answer, print a single line " $ ! \enspace p_1 \enspace p_2 \enspace \ldots \enspace p_n $ " then terminate. You can make at most $ 2n $ queries. Outputting the answer does not count as a query. Hack Format To hack, first output a line containing $ n $ ( $ 2 \leq n \leq 100 $ ), then output another line containing the hidden permutation $ p_1, p_2, \ldots, p_n $ of numbers from $ 1 $ to $ n $ .

输入输出样例

输入样例 #1

5

2

0

1

输出样例 #1

? 4 4 2 3 2

? 3 5 1 5 5

? 5 2 4 3 1

! 3 2 1 5 4

说明

In the sample, the hidden permutation $ p $ is $ [3, 2, 1, 5, 4] $ . Three queries were made. The first query is $ a = [4, 4, 2, 3, 2] $ . This yields $ s = [3 + 4, 2 + 4, 1 + 2, 5 + 3, 4 + 2] = [7, 6, 3, 8, 6] $ . $ 6 $ is the only number that appears more than once, and it appears first at index $ 2 $ , making the answer to the query $ 2 $ . The second query is $ a = [3, 5, 1, 5, 5] $ . This yields $ s = [3 + 3, 2 + 5, 1 + 1, 5 + 5, 4 + 5] = [6, 7, 2, 10, 9] $ . There are no numbers that appear more than once here, so the answer to the query is $ 0 $ . The third query is $ a = [5, 2, 4, 3, 1] $ . This yields $ s = [3 + 5, 2 + 2, 1 + 4, 5 + 3, 4 + 1] = [8, 4, 5, 8, 5] $ . $ 5 $ and $ 8 $ both occur more than once here. $ 5 $ first appears at index $ 3 $ , while $ 8 $ first appears at index $ 1 $ , and $ 1 < 3 $ , making the answer to the query $ 1 $ . Note that the sample is only meant to provide an example of how the interaction works; it is not guaranteed that the above queries represent a correct strategy with which to determine the answer.

Input

题意翻译

这是一道交互题。 原来生命的意义是一个 $n$ ( $ 2 \leq n \leq 100 $ ) 的排列。 创造了世上所有生命的 Omkar 知道这个排列,他允许你在有限的询问次数内查询出这个排列是什么。 每一次询问你可以给出一个序列 $ a_1, a_2, \ldots, a_n $ ( $1\le a_1,a_2,\ldots,a_n \le n$ ) 来对 Omkar 进行询问。 $ a $ 序列**不一定**要是一个排列。之后 Omkar 会逐个将 $a_i$ 与 $p_i$ 相加得到一个新的序列 $s$ ,即对于每个 $j$ ( $1\le j \le n$ ) ,$ s_j = p_j + a_j $ 。最后 $s$ 序列中可能会出现一些相同的数,你将读入 Omkar 告诉你的**第一个出现相同数的位置**。如果没有相同的数出现,你将读入数字 $0$ 。 你最多只能进行 $2n$ 次询问。

加入题单

上一题 下一题 算法标签: