A13564 | Find a Gift
时间限制1s
内存限制256MB
通过 / 提交0/0
题目描述
This is an interactive problem. Don't forget to flush output after printing queries using cout.flush() or fflush(stdout) in C++ or similar functions in other programming languages.
There are $n$ gift boxes in a row, numbered from $1$ to $n$ from left to right. It's known that exactly $k$ of them contain valuable gifts — other boxes contain just lucky stones. All boxes look the same and differ only in weight. All boxes with stones have the same weight and are strictly heavier than boxes with valuable items. But valuable gifts may be different, so the boxes with valuable items may have different weights.
You can ask no more than $50$ queries (printing an answer doesn't count). By each query you can compare total weights of two non-intersecting subsets of boxes $a_1, a_2, \dots, a_{k_a}$ and $b_1, b_2, \dots, b_{k_b}$ . In return you'll get one of four results:
- FIRST, if subset $a_1, a_2, \dots, a_{k_a}$ is strictly heavier;
- SECOND, if subset $b_1, b_2, \dots, b_{k_b}$ is strictly heavier;
- EQUAL, if subsets have equal total weights;
- WASTED, if the query is incorrect or the limit of queries is exceeded.
Using such queries (or, maybe, intuition) find the box with a valuable gift with the minimum index.
There are $n$ gift boxes in a row, numbered from $1$ to $n$ from left to right. It's known that exactly $k$ of them contain valuable gifts — other boxes contain just lucky stones. All boxes look the same and differ only in weight. All boxes with stones have the same weight and are strictly heavier than boxes with valuable items. But valuable gifts may be different, so the boxes with valuable items may have different weights.
You can ask no more than $50$ queries (printing an answer doesn't count). By each query you can compare total weights of two non-intersecting subsets of boxes $a_1, a_2, \dots, a_{k_a}$ and $b_1, b_2, \dots, b_{k_b}$ . In return you'll get one of four results:
- FIRST, if subset $a_1, a_2, \dots, a_{k_a}$ is strictly heavier;
- SECOND, if subset $b_1, b_2, \dots, b_{k_b}$ is strictly heavier;
- EQUAL, if subsets have equal total weights;
- WASTED, if the query is incorrect or the limit of queries is exceeded.
Using such queries (or, maybe, intuition) find the box with a valuable gift with the minimum index.
输入格式
The input consists of several cases. In the beginning, you receive the integer $T$ ( $1 \le T \le 500$ ) — the number of test cases.
At the beginning of each test case, you receive two integers $n$ and $k$ ( $2 \le n \le 1000$ , $1 \le k \le \frac{n}{2}$ ) — the number of boxes in a row and the number of boxes with valuable gifts.
It's guaranteed that the order of boxes is fixed beforehand and that the sum of $n$ in one test doesn't exceed $1000$ .
At the beginning of each test case, you receive two integers $n$ and $k$ ( $2 \le n \le 1000$ , $1 \le k \le \frac{n}{2}$ ) — the number of boxes in a row and the number of boxes with valuable gifts.
It's guaranteed that the order of boxes is fixed beforehand and that the sum of $n$ in one test doesn't exceed $1000$ .
输出格式
For each test case print the minimum index among all boxes with a valuable gift in the following format: "! $x$ " where $x$ ( $1 \le x \le n$ ) — the index of the box.
Interaction
Print each query in three lines. In the first line print the sizes of subset in the following format: "? $k_a$ $k_b$ " where $k_a$ and $k_b$ ( $1 \le k_a, k_b \le n$ ; $k_a + k_b \le n$ ) — the corresponding sizes.
In the second line print $k_a$ integers $a_1, a_2, \dots, a_{k_a}$ ( $1 \le a_i \le n$ ; $a_i \neq a_j$ if $i \neq j$ ) — indexes of boxes in the first subset.
In the third line print $k_b$ integers $b_1, b_2, \dots, b_{k_b}$ ( $1 \le b_i \le n$ ; $b_i \neq b_j$ if $i \neq j$ ) — indexes of boxes in the second subset.
The subsets shouldn't intersect, i. e. $a_i \neq b_j$ for all $i$ and $j$ .
You'll receive one of four responses described above. In the case of WASTED stop your program to avoid getting random verdict instead of Wrong Answer.
Interaction
Print each query in three lines. In the first line print the sizes of subset in the following format: "? $k_a$ $k_b$ " where $k_a$ and $k_b$ ( $1 \le k_a, k_b \le n$ ; $k_a + k_b \le n$ ) — the corresponding sizes.
In the second line print $k_a$ integers $a_1, a_2, \dots, a_{k_a}$ ( $1 \le a_i \le n$ ; $a_i \neq a_j$ if $i \neq j$ ) — indexes of boxes in the first subset.
In the third line print $k_b$ integers $b_1, b_2, \dots, b_{k_b}$ ( $1 \le b_i \le n$ ; $b_i \neq b_j$ if $i \neq j$ ) — indexes of boxes in the second subset.
The subsets shouldn't intersect, i. e. $a_i \neq b_j$ for all $i$ and $j$ .
You'll receive one of four responses described above. In the case of WASTED stop your program to avoid getting random verdict instead of Wrong Answer.
输入输出样例
输入 #1
2 2 1 - - - FIRST - 5 2 - - - FIRST - - - SECOND - - - EQUAL -
输出 #1
- - ? 1 1 1 2 - ! 2 - ? 1 1 1 2 - ? 2 3 4 2 1 3 5 - ? 1 1 4 5 - ! 1
Additional separators "–" in the sample are used only to increase the readability of the sample. Don't print any unnecessary symbols or line breaks in your solution when you send it to the system.
Hacks are forbidden in this task.
Hacks are forbidden in this task.
C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?
提交通过
评测结果:Accepted