#1329. [CZOJ 一周一测 R20 D] 国际象棋

[CZOJ 一周一测 R20 D] 国际象棋

给定一张国际象棋棋盘,如图所示(如果考场不能上网导致无法查看棋盘的话,下发文件中也提供了图片。)

https://bkimg.cdn.bcebos.com/pic/0dd7912397dda144852d6557bab7d0a20cf4862a

在国际象棋中,我们有 3232 颗棋子,分别有 1616 颗黑棋和 1616 颗白棋。对于每种颜色的棋子,分别有 88 个兵(使用 M 表示),22 个城堡(使用 C 表示),22 个骑士(使用 H 表示),22 个主教(使用 B 表示),一个后(使用 Q 表示)和一个王(使用 K 表示)。对于黑色,我们称为 B 表示;对于白色,我们使用 W 表示。对于一颗棋子,我们使用一个字符串 t+ct+c 表示,其中 ++ 表示字符串拼接操作,tt 为棋子的种类,cc 为棋子的颜色。

我们将国际象棋的每个格子使用有序对 (x,y)(x,y) 表示,其中 xx 为大写字母 AHyy181\sim 8 的整数,表示上述棋盘的一个格子。

对于每种棋子有如下的走法:

  • 兵:直线行走,每步只能走一格,不能后退。可以吃斜前方的棋子,但是不能吃正前面的棋子不可以跨越棋子
  • 城堡:直线行走,可以走任意多步,不可以跨过棋子
  • 骑士:先向一个方向走两格,旋转 9090^\circ 再走一步。可以跨过棋子。
  • 主教:只可斜走,可以走任何多步,但是不可以跨越棋子。
  • 后:可以向任何方向行走任意步,但是不可以转弯,不可以跨过棋子。
  • 王:可以向任何方向行走一步。

注意,本题中棋子的走法可能与现实不同。

我们给出初始棋盘的样式,并给出你 nn 步操作,每一步给定两个格子 g1,g2g_1,g_2,表示你需要从将格子 g1g_1 上的棋子移动到格子 g2g_2,你需要报告操作是否合法,若合法则执行操作,否则跳过操作。所有操作结束后,你还需要输出棋盘上的布局。

一个操作合法,当且仅当 g1g2g_1\neq g_2,并且 g1g_1 上存在棋子 g1g_1 上的棋子可以移到 g2g_2,并且 g2g_2 不可以存在自己的棋子(如果存在对方的棋子,则吃子)。

注意,本题中初始棋局为图示棋局,但是给出的棋局并不是初始棋局。

输入格式

第一行输出一个正整数 nn

接下来 88 行,每行 88 个字符串,中间使用空格隔开,保证是棋子或 . 的一种。其中 . 表示这个位置没有任何棋子。

接下来 nn 行,每行的格式如 (x,y) (a,b) 表示操作为将 (x,y)(x,y) 上的棋子移至 (a,b)(a,b)

输出格式

首先输出 nn 行字符串,第 ii 行的字符串表示第 ii 个操作是否合法。具体地,如果第 ii 个操作合法,请输出 Done.,否则请输出 Opps, it doesn't works.

最后请输出一个 8×88\times 8 的字符串矩阵,表示最后的棋盘。具体地,你需要将棋盘从上到下,从左到右输出,同行的格子之间的数据使用空格隔开。

样例

# 样例输入 1

1
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . BB . .
. . . . . . . .
. . . BW . . . .
. . . . . . . . 
. . . . . . . .
(D,3) (F,6)

# 样例输出 1

Opps, it doesn't works.
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . BB . .
. . . . . . . .
. . . BW . . . .
. . . . . . . . 
. . . . . . . .

样例输入 2

6
KB MW MB . . . . . 
HW . QB . . QW . BB 
. CB BW KW MW . BB HB 
MB . . MW HB . CB . 
CW MB MB . MB MB . . 
MB . . . CW MW HW . 
MB . BW MW . . . MW 
. . . . . . . . 
(E,6) (E,7)
(E,5) (C,6)
(A,2) (A,1)
(F,3) (E,4)
(C,6) (A,7)
(B,6) (D,6)

样例输出 2

Done.
Done.
Done.
Done.
Done.
Done.
KB MW MB . . . . .
HB . QB . MW QW . BB
. . . CB . . BB HB
MB . . MW . . CB .
CW MB MB . MW MB . .
MB . . . CW . HW .
. . BW MW . . . MW
MB . . . . . . .

由于此题样例较多,不再提供大样例。

数据范围

对于 50%50\% 的数据,保证 n4×104n\leq 4\times 10^4

对于 90%90\% 的数据,保证 n105n\leq 10^5

对于 100%100\% 的数据,保证 n106n\leq 10^6

保证所有格子是合法的,棋盘的棋子个数是合法的,棋盘上的棋子是合法的。