本题的交互库不是自适应的,排列 在交互开始前已经预先确定,不会在交互过程中动态改变。
本题的原始数据没有针对任何随机数生成器或随机数种子进行特定构造。
交互库有一个 的排列 并拒绝让你直接访问。
你被允许做如下操作,次数不限:
你的手里有 个金币,请在不欠债的前提下将 重排成升序 。
本题是交互题。
本题提供额外头文件 "sorting.h",你需要使用它进行交互:
"sorting.h"
int operate(int l, int r);
void confirm();
请在以下模板上答题。
#include <bits/stdc++.h> #include "sorting.h" using namespace std; int main() { int n = 1000, q = 5e4; bool ok = false; while (!ok) { int l = 1, r = n; // ... int c = operate(l, r); q -= c; assert(q >= 0); // ... } confirm(); return 0; }
测试点 1 和下发的 1.in 使用与本样例相同的秘密排列进行评测。
1.in
以下的交互过程可以获得 AC。
operate(1, 2);
operate(2, 3);
operate(999, 1000);
confirm();
测试点 2 和下发的 2.in 使用与本样例相同的秘密排列进行评测。
2.in
operate(1, 1000);
operate(2, 999);
operate(500, 501);
我们下发了示例头文件 sorting.h 和两个样例(1.in 和 2.in),该头文件和实际评测时使用的头文件实现基本一致,但实际评测时使用的头文件添加了用于抵御非法攻击的特殊模块。
sorting.h
请将你的程序 sorting.cpp 和头文件 sorting.h 放在同一目录下后,使用以下命令编译得到可执行文件(<Additional Parameters...> 是你自己指定的额外编译参数,Windows 下得到 sorting.exe,Linux 下得到 sorting):
sorting.cpp
<Additional Parameters...>
sorting.exe
sorting
g++ sorting.cpp -o sorting <Additional Parameters...>
然后把样例 1 1.in 放在同一目录下,使用以下命令让程序从标准输入 stdin 读入并测试样例:
stdin
sorting < 1.in
./sorting < 1.in
样例 2 2.in 的测试方式同理。
程序将向标准输出 stdout 打印评测结果,保证打印的信息与评测时返回的信息一致。
stdout
你也可以自己将一行 个空格隔开的正整数(必须是一个 的排列)写入文件,把它放在同一目录下,使用和上面类似的方式测试。
请注意,头文件不会校验输入的合法性。