已结束 GESP排位赛#6

A1792 | 危在旦夕的国王

时间限制1s
内存限制512MB
通过 / 提交0/0

题目描述

时间限制:1000ms

内存限制:512MB

Macw 和 RitsuOVO 是国际象棋高手,他们每天在城堡里对弈。今天,他们面对的是一场关乎国王生死的挑战。棋盘上,唯一的黑色国王被困在四面八方的围攻中。

观察国际象棋棋盘判断国王是的状态是否是安全、被将军、被将死,还是陷入了僵局。国王是棋盘中唯一的黑色棋子,假设当前回合是黑方可以移动棋子。

如果国王正处于一个可以被对方棋子吃掉的格子时,则认为国王被将军。国王每一步可以向四周(上、下、左、右、左上、左下、右上、右下)移动一格,如果国王走到了对方棋子所在的格子中,则吃掉该棋子。如果国王走到新格子后会再次被将军,则认为该操作不合法。

将在棋盘中有四种状态,你需要分辨这四种状态:
1. 安全 SAFE:国王并没有被将军,并且可以走到一个不被将军的新格子中。
2. 将军 CHECK:国王被将军,但可以走到一个不会被将军的新格子中。
3. 将死 CHECKMATE:国王被将军,且能走到的任何位置都会被将军。
4. 僵局 STALEMATE:国王没有被将军,但走到任何一个合法的位置都会被将军。

每一种棋子的对应名称如下。
有关国际象棋的规则可以参考链接:Link

国王皇后主教骑士
KQPBNR

输入格式

本题包含多组输入输出,输入输出一共包含 $2T+1$ 行。第一行输入一个数字 $T (1 \le T \le 100)$,表示一共有T组局面需要你来判断国王的状态。

接下来的一行包含一个数字 $N (1 \le N \le 64)$,表示当前局面上有n个棋子(包含国王)。紧接着读入 $N$ 个字符串,每个字符串的长度为3,表示一个棋子的坐标。

字符串的第一个字符代表该棋子的角色,第二个字符代表该棋子所在的横坐标,第三个字符表示该棋子所在的纵坐标。例如:Ba8表示的是主教(Bishop)位于棋盘a8号格子中。每个字符串之间用空格隔开。

输出格式

题目的输出有 $T$ 行,每一行输出一个字符串,表示国王的状态。你需要根据当前的局面来判断国王的状态是否是安全、被将军、被将死,还是陷入了僵局。

输入输出样例

输入 #1
5
5 Ba1 Rd3 Rg7 Qb3 Ke6
5 Rc1 Kd8 Qb6 Re5 Bh3
4 Qf4 Be5 Rc1 Kd3
7 Ra1 Pb5 Pc5 Rc3 Bd6 Qg4 Kb7
9 Ka4 Be8 Rh5 Qf8 Nb6 Nd2 Pc5 Pa3 Bc3
输出 #1
CHECK
CHECKMATE
SAFE
STALEMATE
CHECK
输入 #2
10
5 Rh8 Qh2 Be8 Rg1 Kh4
5 Ba1 Rf6 Rg2 Qc1 Ke3
5 Rc8 Qc3 Re4 Bh5 Kf7
6 Kd6 Qf5 Be4 Rc7 Re1 Ba5
6 Rb8 Ka3 Qe5 Bd1 Bc3 Rh3
6 Rh8 Qa8 Bh2 Kc7 Bd7 Rb2
7 Bf8 Rb8 Pc5 Qh7 Kc6 Bf1 Pb5
7 Ba2 Pg5 Re3 Qd8 Pd5 Kf7 Ph6
4 Kb8 Qb7 Nb5 Nd6
8 Ra1 Ka8 Nc8 Nd7 Bg1 Qe8 Pa6 Rh8
输出 #2
CHECKMATE
CHECK
CHECKMATE
STALEMATE
SAFE
CHECK
CHECK
SAFE
CHECKMATE
STALEMATE
C++ 编辑器
输入
输出