#P13989. [PO Final 2023] 锯木 / The Sawmill
[PO Final 2023] 锯木 / The Sawmill
题目背景
1G, 1s, sagverket
题目描述
Alma 有很多木板,她想把这些木板锯成若干段。因此,她来到了一家能够自动切割并分类木板的先进锯木厂。每块木板可以表示为一条无限长的 轴,锯木厂会在 个位置 处切割,其中 是由用户选择的一个数。随后,所有有限长度的木段会被分类并输出。Alma 想知道这些数 ,但似乎没有人知道锯木厂内部的结构。于是,她计划通过投入若干选择得当的 来找出这些数。
有 个秘密整数 。注意这些数两两不同。你的目标是找出这些数。你可以向锯木厂送入木板。锯木厂以一个整数 作为输入(),并执行如下操作:
- 创建列表 。
- 对 排序。
- 创建列表 ,其中对所有 ,有 。
- 对 排序,并返回其中的 个整数。
你最多可以送入 块木板,但在子任务 中可以送入 块木板。
实现细节
你的程序应首先读入两个整数 和 ()。 是需要找出的秘密数字个数, 是测试组编号。给出 的原因是为了便于获得部分分。
接着,你可以开始送入木板。打印一行 以向锯木厂送入带有数字 的木板。数 必须满足 。随后,你的程序应在一行中读入 个整数,即 。注意:如果 恰好等于某个 ,则 可能为 。
当你已经找到 时,你应打印一行 。
然后你的程序应终止,并且不再打印任何内容。
请在每次询问后都刷新缓冲区,否则可能会因为超时而被判为超时。在 C++ 中可使用例如 cout << flush
或 fflush(stdout)
;在 Python 中可使用 stdout.flush()
;在 Java 中可使用 System.out.flush()
。
输入格式
见「实现细节」。
输出格式
见「实现细节」。
2 2
3 3
2 6
? 5
? 10
! 2 8
提示
子任务
本题采用捆绑测试。
子任务编号 | 分值 | 限制 |
---|---|---|
,可最多发送 块木板。 | ||
无额外约束。 |