luogu#P11478. [COCI 2024/2025 #3] 处理器 / Procesor
[COCI 2024/2025 #3] 处理器 / Procesor
题目背景
译自 COCI 2024/2025 #3 T5。。满分为 。
为了方便测试,公开交互库。
题目描述
这是一道交互题。
有一个初始时为空的数组 。
次操作,第 次操作向 的末尾添加 个整数。
每次操作后,通过若干次询问,你需要找到最小的未被标记的整数对应的下标 ,并给 打标记。
每次询问,你可以询问两个未被标记的整数 的大小关系。
设当前数组长度为 ,保证 , 和 恰有一个成立。换句话说,保证数组内元素两两不同。
实现细节
首先读入一个正整数 。接下来依次处理 次操作。
对于第 次操作,读入一个正整数 ,表示增加的整数数量。
接下来你可以按照以下格式询问若干次:
- :询问 的大小关系。
- 返回 ,表示 ;返回 ,表示 。
- 令当前数组长度为 ,你需要保证 。
- 你需要保证 ,且 未被标记。
按以下格式回答:
- :当前数组内未被标记的最小整数为 。
回答后立刻读入下一个整数 ,若这是最后一次操作则立刻结束程序。
在每次询问或者回答后,都要换行并刷新缓冲区。 刷新缓冲区的方式:C++ 中的 std::cout.flush()
,std::cout<<std::endl
。
输入格式
见【实现细节】。
输出格式
见【实现细节】。
3
3
1
0
0
1
1
1
0
? 1 2
? 1 3
? 2 3
! 2
? 1 4
! 4
? 1 5
! 1
提示
样例解释
样例 中,。
- 查询 与 :,返回 ;
- 查询 与 :,返回 ;
- 查询 与 :,返回 。
不难发现 为当前未标记的最小值,所以回答 。接下来继续处理剩余的两次操作。
数据范围
对于 的数据,保证:
- ;
- 。
- 数组内整数两两不同。
计分方式
令你的程序询问次数的最大值为 。
- ,得 分。
- ,得 分。
- ,得 分。
- ,得 分。
- ,得 分。