#HK5210. 「UOI 2024 Stage 4 Day1」直线上的点
「UOI 2024 Stage 4 Day1」直线上的点
题目描述
题目译自 Ukrainian Olympiads in Informatics 2024 Stage 4 Day1 T1. Точки на прямій
这是一个交互题。
在一条数轴上有 个点,它们的坐标为整数 。保证对于 ,有 。
我们认为点 位于点 和 之间,当且仅当它属于以 和 为端点构建的线段上。形式上,点 位于点 和 之间,当且仅当 或 。
你的任务是找到任意两个编号 和 ,使得所有 个点都位于点 和 之间。
你可以使用以下查询:选择三个编号 ,询问点 是否位于点 和 之间。
你最多可以使用 次查询。
保证点的坐标在交互开始前已固定。换句话说,交互器不是自适应的。
输入格式
输入的第一行包含一个整数 ,表示点的数量。
输出格式
要发起查询,输出 ,然后输出换行符并执行 flush 操作。
作为查询的响应,评测程序将返回一个整数 。如果 ,则点 位于点 和 之间;如果 ,则点 不位于它们之间。
如果查询无效(即超过最大查询次数或查询参数无效),评测程序将输出 -1 并终止运行。在这种情况下,请结束程序以获得「答案错误」的评测结果。
当你准备好给出答案时,输出 ,其中 和 是所求的点编号。然后结束程序。
flush 操作的执行方式如下:
- C++ 中使用
fflush(stdout)或cout.flush(); - Java 中使用
System.out.flush(); - Pascal 中使用
flush(output); - Python 中使用
sys.stdout.flush()。
4
1
1
? 1 4 2
? 1 4 3
! 1 4
在样例中,点的坐标为 。
数据范围与提示
详细子任务附加限制及分值如下表所示:
| 子任务 | 分值 | 附加限制 |
|---|---|---|
| , | ||
| 无附加限制 |