不要引入头文件。在文件头粘贴
#include <vector>
int press_button(int);
以评测。
这是一道交互题。本题中,交互库是非自适应的。
有一台破旧的机器,有 个隐藏的开关,编号 。开关的状态用 来表示。我们说开关 断开,当且仅当 ;否则 ,开关 接通。
起初,所有开关都是断开的。
有 个按钮,编号 。有一个隐藏的 的排列,记为 。
现在想要确定 。为此,你可以进行如下的操作:
操作
- 选定 满足 ,按下按钮 。
- 令本次操作前(不含本次)一共进行了 次操作。
- 翻转开关 的状态。形式化地,令 。
- 你将得知 的值。
给定 ,你需要用至多 次操作找出排列 。
为了获得满分,需要更少的操作次数,详见「计分方式」。
实现细节
这是一道(函数式)交互题。你不需要,也不应该定义 main 函数。
你需要实现函数
std::vector<int> solve(int N);
该函数接收参数 ;返回长度为 的 vector 满足 。该函数每个测试点仅调用一次。
你可以调用以下的函数:
描述一次按下按钮 的操作,返回操作后 的值。
Sample Grader
在附件中附有 sample grader()。其输入格式如下:
它会调用 solve(N) 函数,报告你程序的运行结果:若通过,输出查询次数;否则,输出错误信息。