#P6585. 中子衰变
中子衰变
题目背景
这是一道交互题。
可能会用到的前置知识:
质子带一个单位的正电荷。
电子带一个单位的负电荷。
中子不带电。
题目描述
Youyou 和小 Z 面前有 个中子,从左往右排成一行,这些中子被强作用力固定在编号为 的位置上。
小 Z 拥有一台弱作用衰变机 Wadm(Weak Action Decay Machine)。Wadm 每次可以使一个中子发生弱作用衰变,放出一个电子和一个质子(本题中不考虑中微子),然后 Wadm 会根据 Youyou 或小 Z 的指令,留下其中一个粒子,然后将另一个粒子移出体系。
简而言之,Wadm 可以将一个中子变为一个电子或一个质子。
现在小 Z 想和 Youyou 玩一个游戏:两个人轮流使用 Wadm 操作一个中子,将其变为一个电子或一个质子。然而,如果一个电子和质子相邻,那么由于强大的库仑引力的作用,它们会脱离强作用力的束缚,所以这种情况是不被允许的。如果轮到某人操作时,所有位置都不能操作了,那么他就输了。
Youyou 快乐地答应了小 Z 的游戏请求,但是面对聪明的小 Z,Youyou 只好来求助你了。
特别地,如果全部中子最后变成了同种粒子,那么后手获胜。
如果你帮助 Youyou 打败了小 Z,那么 Youyou 就会送你一台 Wadm 作为奖励!
交互方式
你的程序应从标准输入中读入,向标准输出中输出。
输入中将包含两个整数 n task_id
,分别代表题目中的 和子任务编号。
然后你需要输出一个整数 order
, 只能是 或 。 代表你选择先手, 代表你选择后手。
接下来,你应该根据你选择的先后手情况通过标准输入输出与交互库进行交互。
-
若轮到你操作,那么你应该接着输出两个整数
place type
,代表你将位置在 的中子变为了电子()或质子()。其中,你需要保证:- 且该位置可以操作;
- ;
- 你已经清空缓冲区。在 C 或 C++ 中,可使用
fflush(stdout)
函数。在 C++ 中,还可使用cout << flush
,cout.flush()
,或使用endl
而不是'\n'
来输出一个换行。
-
若轮到小 Z 操作,那么你应该接着读入两个整数
place type
,代表小 Z 将位置在 的中子变为了电子()或质子()。其中,保证:- 且该位置可以操作;
- 。
例如,如果你选择先手,那么你应该按照「输出,输入,输出,输入……」的顺序进行交互。如果你选择后手,那么你应该按照「输入,输出,输入,输出……」的顺序进行交互。
请注意,如果游戏结束,你应当立即终止程序。游戏结束后多余的输出可能会导致 RE 。
输入格式
见「交互方式」。
输出格式
见「交互方式」。
4 1
2 1
0
1 1
4 -1
提示
- Subtask 1(5 分):;
- Subtask 2(8 分):;
- Subtask 3(12 分): 为偶数,交互库特殊策略*;
- Subtask 4(15 分):交互库特殊策略*;
- Subtask 5(20 分): 为偶数;
- Subtask 6(40 分):无特殊限制。
*交互库特殊策略:每次轮到交互库操作时,交互库会找到最左侧的能操作的位置,然后如果该位置能操作为质子,则操作为质子,否则操作为电子。
对于全部的数据,保证 。