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