P6253 [ICPC 2019 WF] Checks Post Facto

题目背景

### Warning: If you submit a malicious program, you will be banned. ### 警告:恶意提交本题将被封号。

题目描述

游戏在一个 $8 \times 8$ 的方格棋盘的深色方格上进行。有两名玩家,黑方和白方,他们轮流移动他们的棋子(所有黑方的棋子都是黑色的,所有白方的棋子都是白色的)。每个棋子占据一个单独的深色方格,可以是**兵**或**王**。一个回合包括选择一个棋子并以以下两种方式之一移动它: 1. 将其**斜着**移动到一个相邻的未占用的深色方格,如图 (a) 所示。这被称为**简单移动**。兵只能沿向前的两种方向移动(对于黑方是朝下,对于白方是朝上)。如果棋子是王,它可以在所有四个斜方向移动。 2. 跳过对方的棋子到达空地,并吃掉对方的子。允许移动的方向与第一条相同。然后,玩家可以重复此步骤,继续使用相同的棋子跳。这样一个或多个跳的序列称为**跳跃移动**。图 (b) 展示了由三个跳跃组成的跳跃移动。 如果在玩家回合开始时有一个跳跃移动可用,他们必须进行跳跃,并且不能停止使用该棋子跳跃,直到它没有更多可能的跳跃。他们可以自由选择使用哪个棋子进行跳跃,以及在有多个可能性的情况下选择在哪里跳跃。在图 (b) 中,黑方不能进行任何其他移动。 如果一个兵达到其玩家的最远一行(即,一个黑子达到底行或一个白子达到顶行),它将变成同色的王(称为**晋升**),然后**回合结束**。这意味着一个兵不能在同一回合中被晋升然后以王的身份继续倒退跳跃。 给定一系列移动,请找到一个初始棋局,使得可以从该棋局开始按顺序合法进行这些移动。此棋局可能不能在底行有黑子或在顶行有白子,因为它们可能已经被晋升为王。你只需要确保上述规则被遵守;不需要确保这个棋局在实际跳棋游戏中是可达的。

输入格式

输入的第一行包含一个字符 $c$ 和一个整数 $n$,其中 $c$ 是 B 或 W,表示哪个玩家首先移动(分别为黑方或白方),$n$($1 \leq n \leq 100$)是移动列表中的移动次数。然后是 $n$ 行,每行描述标准跳棋符号中定义的一步移动。 深色方格用数字 $1 \sim 32$ 标识,如图 (c) 所示。从方格 $a$ 到方格 $b$ 的简单移动写作 a-b。从 $a$ 开始跳到 $b_1, b_2, \dots , b_k$ 的跳跃移动写作 $a\text{x}b_1\text{x}b_2\text{x} \dots \text{x}b_k$。 对于给定的移动集合,总是存在至少一个答案。

输出格式

所有棋子在棋盘上的位置以两个并排的棋盘输出(用空格分隔),分别表示在给定的移动之前(左边)和之后(右边)的棋盘。 使用`-`表示浅色方格,`.`表示空的深色方格,小写的`b`和`w`表示黑色和白色兵,大写的`B`和`W`表示黑色和白色王。如果存在多个答案,则任何一个都可以接受。

说明/提示

Source: ICPC World Finals 2019.