A18743.危在旦夕的国王
普及/提高-
通过率:0%
时间限制:1.00s
内存限制:512MB
题目描述
时间限制:1000ms
内存限制:512MB
Macw 和 RitsuOVO 是国际象棋高手,他们每天在城堡里对弈。今天,他们面对的是一场关乎国王生死的挑战。棋盘上,唯一的黑色国王被困在四面八方的围攻中。
观察国际象棋棋盘判断国王是的状态是否是安全、被将军、被将死,还是陷入了僵局。国王是棋盘中唯一的黑色棋子,假设当前回合是黑方可以移动棋子。
如果国王正处于一个可以被对方棋子吃掉的格子时,则认为国王被将军。国王每一步可以向四周(上、下、左、右、左上、左下、右上、右下)移动一格,如果国王走到了对方棋子所在的格子中,则吃掉该棋子。如果国王走到新格子后会再次被将军,则认为该操作不合法。
将在棋盘中有四种状态,你需要分辨这四种状态:
- 安全 SAFE:国王并没有被将军,并且可以走到一个不被将军的新格子中。
- 将军 CHECK:国王被将军,但可以走到一个不会被将军的新格子中。
- 将死 CHECKMATE:国王被将军,且能走到的任何位置都会被将军。
- 僵局 STALEMATE:国王没有被将军,但走到任何一个合法的位置都会被将军。
每一种棋子的对应名称如下。
有关国际象棋的规则可以参考链接:Link。
国王 | 皇后 | 兵 | 主教 | 骑士 | 车 |
---|---|---|---|---|---|
K | Q | P | B | N | R |
输入格式
本题包含多组输入输出,输入输出一共包含 2T+1 行。第一行输入一个数字 T(1≤T≤100),表示一共有T组局面需要你来判断国王的状态。
接下来的一行包含一个数字 N(1≤N≤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
说明/提示
数据范围:
对于100%的数据,保证输入输出数据均合法。
同时对于本题而言,白方棋子的个数不一定遵循标准的国际象棋规则。例如,白方骑士的数量不一定小于等于2,可以是任意不超过63的数字。
本题为纯模拟题,不考虑对程序时间不做要求。在一秒内输出正确结果即可。
样例解释:
对于样例1的第一个测试点,可以看出国王已经被将军了,但国王可以向右下角移动一格,摆脱被白方皇后的攻击。
对于样例2的最后一个测试点,国王陷入了僵局。国王目前处于一个安全的位置,但是国王无论如何怎么走都会被白方棋子击败。