A18743.危在旦夕的国王

普及/提高-

通过率:0%

时间限制:1.00s

内存限制:512MB

题目描述

时间限制:1000ms
内存限制:512MB

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

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

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

将在棋盘中有四种状态,你需要分辨这四种状态:

  1. 安全 SAFE:国王并没有被将军,并且可以走到一个不被将军的新格子中。
  2. 将军 CHECK:国王被将军,但可以走到一个不会被将军的新格子中。
  3. 将死 CHECKMATE:国王被将军,且能走到的任何位置都会被将军。
  4. 僵局 STALEMATE:国王没有被将军,但走到任何一个合法的位置都会被将军。

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

国王 皇后 主教 骑士
K Q P B N R

输入格式

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

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

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

输出格式

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

输入输出样例

  • 输入#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的最后一个测试点,国王陷入了僵局。国王目前处于一个安全的位置,但是国王无论如何怎么走都会被白方棋子击败。

首页