#P15517. [Nordic2022]Quark Microscopy
[Nordic2022]Quark Microscopy
这下可惨了!
Niels 珍爱的原子被宇宙射线击中,分裂成了许多夸克。Niels 迫切地想要找到这些夸克,然后将它们重新拼起来。于是,他找来了你帮忙。
这 个夸克分布在一条 米长的线段上。由于 米等于 阿米,所以每个夸克的位置都是 之间的正整数。
幸运的是,你有一个很精确但有点奇怪的夸克显微镜。它能够检测并测量邻近的夸克。然而由于量子效应,它无法直接告诉你离测量位置最近的夸克的位置,而是会告诉你:
- 离测量位置第二近的夸克的距离;
- 离测量位置这个距离的夸克数量。
更准确地说,你可以在线段上的位置 处进行测量。
对于每次测量,把所有夸克到 的距离按升序排序,记为:
交互库会返回:
- ;
- 满足 的 的数量,这个数量只会是 或 。
在进行足够多次测量后,你需要回答所有夸克所在的位置。
由于 Pauli 不相容原理,夸克的位置不会重合。
交互格式
你的程序与交互库通过标准输入输出流交互。
首先读入两个整数 ,表示夸克数量和子任务编号。
接下来可以进行若干次询问或给出答案。
询问
输出:
? x
表示在位置 处进行测量。
你需要保证:
交互库会返回两个整数 :
- 表示离 第二近的夸克的距离;
- 表示距离 恰好为 的夸克数量, 只会是 或 。
回答
输出:
! a_1 a_2 ... a_N
表示你认为夸克的位置分别是 。
你可以以任意顺序输出这些位置。
回答后,不应继续进行询问。
你需要保证:
刷新缓冲区
交互过程中,每次输出后都需要刷新缓冲区。
常见语言的刷新方式:
- C++:
fflush(stdout)或cout.flush(); - C++ 中使用
endl换行也会刷新; - C:
fflush(stdout)。
数据范围
- ;
- ;
- 所有夸克位置互不相同;
- 所有夸克位置均为 内的整数。
评分方式
| 子任务编号 | 分值 | 限制 |
|---|---|---|
| 存在一个夸克位于位置 | ||
| 所有夸克的位置均为偶数 | ||
| 无额外限制 |
其中 与你在该子任务中的最大询问次数 有关:
| 查询次数 | |
|---|---|