CF1839E Decreasing Game
题目描述
这是一个交互题。
考虑如下的两人游戏:
- 初始时,黑板上写有一个长度为 $n$ 的整数数组 $a_1, a_2, \ldots, a_n$。
- 游戏由若干轮组成。每一轮按如下方式进行:
- 第一位玩家选择任意一个 $i$,使得 $a_i > 0$。如果不存在这样的 $i$,则第一位玩家输掉游戏(第二位玩家获胜),游戏结束。
- 第二位玩家选择任意一个 $j \neq i$,使得 $a_j > 0$。如果不存在这样的 $j$,则第二位玩家输掉游戏(第一位玩家获胜),游戏结束。
- 令 $d = \min(a_i, a_j)$。同时将 $a_i$ 和 $a_j$ 的值减少 $d$,然后进入下一轮。
可以证明,游戏总会在有限轮后结束。
你需要选择你要扮演的玩家(第一位或第二位),并赢得游戏。
输入格式
第一行包含一个整数 $n$($1 \le n \le 300$),表示数组 $a$ 的长度。
第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$($1 \le a_i \le 300$),表示数组 $a$。
输出格式
读入 $n$ 和数组 $a$ 后,开始交互。
你应首先输出一行,内容为 "First" 或 "Second",表示你选择扮演的玩家。
每一轮,按如下方式进行:
- 如果你扮演第一位玩家,你应在单独一行输出一个整数 $i$($1 \le i \le n$)。之后,你需要读入一行,包含一个整数 $j$($-1 \le j \le n$)。
- 如果 $j = -1$,说明你做出了非法操作,此时你的程序应立即终止。
- 如果 $j = 0$,说明第二位玩家无法做出合法操作,你赢得了游戏,此时你的程序也应立即终止。
- 否则,$j$ 表示第二位玩家选择的下标,进入下一轮。
- 如果你扮演第二位玩家,你需要读入一行,包含一个整数 $i$($-1 \le i \le n$)。
- 如果 $i = -1$,说明你在上一轮做出了非法操作(第一轮不会发生此情况),此时你的程序应立即终止。
- 如果 $i = 0$,说明第一位玩家无法做出合法操作,你赢得了游戏,此时你的程序也应立即终止。
- 否则,$i$ 表示第一位玩家选择的下标,此时你应在单独一行输出一个整数 $j$($1 \le j \le n$),进入下一轮。
每次输出 $i$ 或 $j$ 后,别忘了输出换行并刷新输出缓冲区,否则会导致“Idleness limit exceeded”。可以使用如下方式刷新输出:
- C++:fflush(stdout) 或 cout.flush()
- Java:System.out.flush()
- Pascal:flush(output)
- Python:stdout.flush()
- 其它语言请参考相关文档。
Hack
本题不支持 Hack。
说明/提示
在第一个样例中,$n = 4$,数组 $a$ 为 $[10, 4, 6, 3]$。游戏过程如下:
- 读入数组 $a$ 后,选手程序选择扮演第一位玩家,输出 "First"。
- 第一轮:第一位玩家选择 $i = 1$,第二位玩家选择 $j = 3$。$d = \min(a_1, a_3) = \min(10, 6) = 6$。$a_1$ 和 $a_3$ 同时减少 $6$,数组变为 $[4, 4, 0, 3]$。
- 第二轮:第一位玩家选择 $i = 2$,第二位玩家选择 $j = 1$。$d = \min(a_2, a_1) = \min(4, 4) = 4$。$a_2$ 和 $a_1$ 同时减少 $4$,数组变为 $[0, 0, 0, 3]$。
- 第三轮:第一位玩家选择 $i = 4$。不存在 $j \neq 4$ 且 $a_j > 0$,因此第二位玩家无法做出合法操作,第一位玩家获胜。评测程序输出 $j = 0$,选手程序读入后终止。
在第二个样例中,$n = 6$,数组 $a$ 为 $[4, 5, 5, 11, 3, 2]$。游戏过程如下:
- 选手程序选择扮演第二位玩家,输出 "Second"。
- 第一轮:$i = 2$,$j = 4$,$a = [4, 0, 5, 6, 3, 2]$。
- 第二轮:$i = 5$,$j = 4$,$a = [4, 0, 5, 3, 0, 2]$。
- 第三轮:$i = 4$,$j = 3$,$a = [4, 0, 2, 0, 0, 2]$。
- 第四轮:$i = 6$,$j = 1$,$a = [2, 0, 2, 0, 0, 0]$。
- 第五轮:$i = 1$,$j = 3$,$a = [0, 0, 0, 0, 0, 0]$。
- 第六轮:第一位玩家无法做出合法操作,第二位玩家获胜。评测程序输出 $i = 0$,选手程序读入后终止。
注意,样例交互中包含了额外的空行以便阅读,实际交互中没有任何空行,你也不应输出任何多余的空行。
由 ChatGPT 4.1 翻译