#P7971. [KSN2021] Colouring Balls
[KSN2021] Colouring Balls
题目描述
这是一道交互题。
有 个小球,从 到 编号。
你每次可以询问编号在 之间的小球有几种不同的颜色,你需要求出每个小球的颜色。由于你并不知道具体颜色是什么,你只要将同种颜色用同一个数字表示即可。
交互格式
第一行输入一个正整数 ,代表 Subtask 编号(而不是测试数据组数)。
第二行输入两个整数 ,代表小球数量和询问次数限制。
接下来你可以提出不超过 个询问并读取交互库返回的答案,每个询问的格式为 ? l r
,代表你询问 中小球颜色的数量。
当你确认所有小球的颜色后,你需要输出 ! a1 a2 ... an
代表所有小球的颜色。你需要保证:
- 且 均为整数。
- 相同颜色的小球的 相同。
- 不同颜色的小球的 不同。
你的每次输出后都需要刷新缓冲区,你可以使用如下语句来清空缓冲区:
- 对于 C/C++:
fflush(stdout)
; - 对于 C++:
std::cout << std::flush
; - 对于 Java:
System.out.flush()
; - 对于 Python:
stdout.flush()
; - 对于 Pascal:
flush(output)
; - 对于其他语言,请自行查阅对应语言的帮助文档。
输入格式
见“交互格式”。
输出格式
见“交互格式”。
1
5 10000
2
1
2
? 1 5
? 1 3
? 2 4
! 1 1 1 2 2
提示
【数据范围】
本题采用捆绑测试。
- Subtask 1(8 points):, 保证每种颜色的球的编号连续。
- Subtask 2(7 points):,保证每种颜色的球的编号连续。
- Subtask 3(19 points):,保证球只有至多 种颜色。
- Subtask 4(14 points):,保证球只有至多 种颜色。
- Subtask 5(12 points):,保证球有至少 种颜色。
- Subtask 6(21 points):,保证 。
- Subtask 7(19 points):。
对于所有数据,保证 ,。