#P8851. 『JROI-7』T2nz.
『JROI-7』T2nz.
题目背景
这是一道交互题。
题目描述
小 X 陷入了一个奇怪的梦。在梦境里,她在和小 Q 下一种奇怪的棋。
这是一个 的棋盘,小 X 执黑先行,小 Q 执白后行。
每次操作,需要在当前未满的第一行内,任意选择一格下棋。一格内只能有一个棋子。
下满之后,共有 行棋子,小 X 的得分为本质不同的行数。
小 X 想最大化她的得分,但小 Q 想最小化小 X 的得分。
你的任务是,扮演小 X 或小 Q,最大化或最小化得分。
若你是小 X,在满足最大化得分 的同时,你也要最大化前 行中本质不同的行数。
交互格式
你要先从标准输入读入一行两个整数 ,表示数据组数和你扮演的角色。保证 。若 ,表示你扮演小 Q(后手);若 ,表示你扮演小 X(先手)。
接下来每一组数据,你要先从标准输入读入一行一个正整数 ,含义见题目描述。
接下来会进行 次交互。
在每次交互中:
- 若 ,你要先从标准输入读入一行一个正整数 ,表示小 X 下了黑棋在当前未满的第一行的第 列,接下来你要向标准输出输出一个正整数 ,表示你下了白棋在当前未满的第一行的第 列;
- 若 ,你要先向标准输出输出一个正整数 ,表示你下了黑棋在当前未满的第一行的第 列,接下来你要从标准输入读入一行一个正整数 表示小 Q 下了白棋在当前未满的第一行的第 列。
你的输出都要换行并清空缓存区。
你需要保证你下棋的位置不能已有棋子。同时,交互库也会保证其下棋的位置不会已有棋子。
输入格式
见「交互格式」。
输出格式
见「交互格式」。
1 1
1
2
1
2
1
1
2
1
2
提示
【样例解释】
读入的 ,因此棋盘的大小是 的。两人模拟如动图所示。最终结果如下图所示:
可以观察发现,最终本质不同的行数为 。容易发现,这是小 X 能最大化的得分。同时,前 行中本质不同行数为 ,显然无法达到更大的值。
【数据范围与规模】
测试点编号 | ||
---|---|---|
对于所有的数据,保证 ,,。
【提示】
-
您可以使用如下语句来清空缓冲区:
- 对于 C/C++:
fflush(stdout)
; - 对于 C++:
std::cout << std::flush
; - 对于 Java:
System.out.flush()
; - 对于 Python:
stdout.flush()
; - 对于 Pascal:
flush(output)
; - 对于其他语言,请自行查阅对应语言的帮助文档。
- 特别的,对于 C++ 语言,在输出换行时使用
std::endl
而不是'\n'
,也可以自动刷新缓冲区。
- 对于 C/C++:
-
我们保证交互库耗时在 内,空间消耗可以忽略不计。