CF1812H.Expected Twist
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
这是一个交互题。
有一个长度为 n 的整数数组 a1,a2,…,an,你无法直接看到数组内容。你的任务是找出该数组中的最小元素。
为此,你可以进行若干次查询。每次查询时,你可以选择两个整数 l 和 r(1≤l≤r≤n)。系统会返回 max(al,al+1,…,ar) 的值,也就是子数组 al 到 ar 的最大值。
请找出该数组的最小值。你最多可以进行 624 次查询。
保证 a1,a2,…,an 的值均匀随机地选自 0 到 232−1(包含端点)。
输入格式
首先,读入一个整数 n(1≤n≤104),表示数组的长度。
每次你想进行查询时,输出一行 ?lr(1≤l≤r≤n)。然后你需要读入一行,包含该查询的答案。
当你确定了答案后,输出一行 !x,其中 x 是数组的最小值。
每次输出查询后,不要忘记输出换行并刷新输出缓冲区,否则会收到 Idleness limit exceeded 的判罚。具体做法如下:
- C++:使用 fflush(stdout) 或 cout.flush();
- Java:使用 System.out.flush();
- Pascal:使用 flush(output);
- Python:使用 stdout.flush();
- 其它语言请参考相关文档。
如果收到的答案为 −1,说明你的查询无效。此时应立即退出程序,你会收到 Wrong answer 的判罚。否则,如果继续读取输入流,你可能会收到任意判罚结果。
输出格式
见输入格式说明。
输入输出样例
输入#1
3 1295320727 984617979 1295320727 167316954
输出#1
? 1 3 ? 1 1 ? 2 2 ? 3 3 ! 167316954
说明/提示
无。
由 ChatGPT 4.1 翻译
输入解题思路,AI测评打分。不知道怎么写?