#P17314. [KismetOI 2026 I] oo_vv_oo
[KismetOI 2026 I] oo_vv_oo
题目描述
有一个长度为 的序列 。
你每次可以给交互库一个下标序列 。需保证 ,但可以有相同的。
交互库会返回 。其中 表示 $A_{i_{j_x}} > \max(A_{i_{j_{x}-1}},A_{i_{j_{x}+1}})$,显然 。
现在已知 ,并且 中存在唯一的最大值。同时一定有 。请在 次询问内回答最大值的下标。
请注意:查询的 不能超过 ,否则可能出现未知错误情况。
输入格式
首先输入一行两个整数 。
对于你的每次查询,交互库会按如下格式输出一行:首先输出一个整数 ,接下来输出 个整数表示返回的 序列,用空格隔开。
输出格式
你可以以如下格式进行交互:
- 输出一行
? k i[1] i[2] ... i[k]进行题目描述中给出的查询。 - 输出一行
! ans表示你确定了最大值的下标 并输出,请在此后自行结束程序运行以防止获得不可预知的结果。
请在每次执行完一次查询或给出答案的输出后,输出一个换行并清空缓冲区。
你可以使用如下语句来清空缓冲区:
- 对于 C/C++:
fflush(stdout); - 对于 C++:
std::cout << std::flush; - 对于 Java:
System.out.flush(); - 对于 Python:
stdout.flush(); - 对于 Pascal:
flush(output); - 对于其他语言,请自行查阅对应语言的帮助文档。
请保证你的程序的交互过程符合格式要求,否则你可能得到不可预知的错误结果。
如果您有更多疑问,可以参阅样例与样例解释。
6 1000000
2 3 5
1 2
? 6 1 2 3 4 5 6
? 4 2 3 4 5
! 3
提示
【样例解释】
请注意,样例仅供展示交互格式,不保证样例输出策略的合理性。
隐藏的 序列为 。
对于第一次查询,有 ,,故交互库返回 。
对于第二次查询,有 ,故交互库返回 。请注意返回的是 序列而非 序列。
程序找到答案并输出 , 确实为序列最大值,答案正确。
【数据范围】
对于所有数据,满足 $3 \le n \le 10^6, 1 \le m \le 10^6, 0 \le A_i \le 10^9$。
::cute-table{tuack} | 子任务编号 | | 特殊性质 | 分值 | | :--------: | :--------: | :------: | :--: | | #1 | | 无 | | | #2 | | | | | #3 | | | | | #4 | | | |