P13943 [EC Final 2019] Game

题目描述

Alice 和 Bob 正在玩“陆战棋”。他们每个人都有一个由以下 $24$ 个棋子组成的 $\textit{排列}$: - 1 个司令,序号 9 - 1 个军长,序号 8 - 2 个师长,序号 7 - 2 个旅长,序号 6 - 2 个团长,序号 5 - 2 个营长,序号 4 - 3 个连长,序号 3 - 3 个排长,序号 2 - 3 个工兵,序号 1 - 2 个炸弹 - 3 个地雷 为了决定胜负,重复以下过程直到有人获胜或平局: - 如果两个排列都为空,游戏平局。 - 如果 Alice 的排列为空,Bob 获胜。 - 如果 Bob 的排列为空,Alice 获胜。 - 令 Alice 排列的第一个棋子为 $A$,Bob 排列的第一个棋子为 $B$,则 $A$ 与 $B$ 进行对战,规则如下: - 如果 $A$ 和 $B$ 是同类型棋子,或其中一个是炸弹,则两者都被移除。 - 否则,如果 $A$ 或 $B$ 是地雷,且另一个是工兵,则地雷被移除,工兵存活。 - 否则,如果 $A$ 或 $B$ 是地雷,且另一个的序号大于 1,则地雷存活,另一个被移除。 - 否则,比较 $A$ 和 $B$ 的序号,序号较小的被移除。 Bob 事先知道 Alice 的排列,并可以根据此信息决定自己的排列。在 Bob 决定好自己的排列后,Alice 可以交换 Bob 排列中的任意两个棋子。请问 Bob 能否构造出一个排列,使得无论 Alice 交换哪一对棋子,Bob 都能战胜 Alice 的排列?如果可以,请输出任意一个满足条件的排列。

输入格式

第一行包含一个整数 $T$,表示测试用例数量($1\le T\le 100$)。 接下来的 $T$ 行,每行包含 $24$ 个整数,表示 Alice 的排列: - $40$ 表示司令 - $39$ 表示军长 - $38$ 表示师长 - $37$ 表示旅长 - $36$ 表示团长 - $35$ 表示营长 - $34$ 表示连长 - $33$ 表示排长 - $32$ 表示工兵 - $31$ 表示地雷 - $30$ 表示炸弹 保证所有排列均为随机选取,并且每种棋子的数量与题目描述一致。

输出格式

每个测试用例输出一行。 如果 Bob 无法构造出满足条件的排列,输出 $-1$。 否则,输出 $24$ 个整数,表示 Bob 的排列,格式与输入相同。如果有多种方案,输出任意一种。Bob 的排列必须包含题目描述中的全部 $24$ 个棋子。

说明/提示

由 ChatGPT 4.1 翻译