A14647 | Omkar and the Meaning of Life
时间限制1s
内存限制256MB
通过 / 提交0/0
题目描述
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$ .
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$ .
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.
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.
C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?
提交通过
评测结果:Accepted