117602024-11-09 15:24:37balintStefan sakkmesteri ambícióipython3Runtime error 0/10018ms3728 KiB
from sys import stdin


def main():
    for _ in range(int(input())):
        board = stdin.read(9 * 8).splitlines()
        # search black queen position
        brk = False
        for y in range(8):
            for x in range(8):
                if board[y][x] == "q":
                    brk = True
                    break
            if brk:
                break

        board_checked = False
        # left
        i = x - 1
        while i >= 0:
            if board[y][i] != ".":
                if board[y][i] in [
                    "Q",
                    "R",
                ]:  # can only be hit from left side if its a rook or queen
                    print("YES")
                    board_checked = True
                break  # continue bc piece blocks attacks from this direction
            i -= 1
        if board_checked:
            continue
        # right
        i = x + 1
        while i < 8:
            if board[y][i] != ".":
                if board[y][i] in [
                    "Q",
                    "R",
                ]:  # can only be hit from right side if its a rook or queen
                    print("YES")
                    board_checked = True
                break  # continue bc piece blocks attacks from this direction
            i += 1
        if board_checked:
            continue
        # up
        i = y - 1
        while i >= 0:
            if board[i][x] != ".":
                if board[i][x] in [
                    "Q",
                    "R",
                ]:  # can only be hit from up if its a rook or queen
                    print("YES")
                    board_checked = True
                break  # continue bc piece blocks attacks from this direction
            i -= 1
        if board_checked:
            continue
        # down
        i = y + 1
        while i < 8:
            if board[i][x] != ".":
                if board[i][x] in [
                    "Q",
                    "R",
                ]:  # can only be hit from down if its a rook or queen
                    print("YES")
                    board_checked = True
                break  # continue bc piece blocks attacks from this direction
            i += 1
        if board_checked:
            continue
        # left up diagonal
        i, j = y - 1, x - 1
        while i > 0 and j > 0:
            if board[i][j] != ".":
                if board[i][j] in [
                    "Q",
                    "B",
                ]:  # can only be hit drom diagonal if its queen or bishop
                    print("YES")
                    board_checked = True
                break  # continue bc piece blocks attacks from this direction
            i -= 1
            j -= 1
        if board_checked:
            continue
        # right up diagonal
        i, j = y + 1, x - 1
        while i < 8 and j >= 0:
            if board[i][j] != ".":
                if board[i][j] in ["Q", "B"]:
                    print("YES")
                    board_checked = True
                break
            i += 1
            j -= 1
        if board_checked:
            continue
        # left down diagonal
        i, j = y - 1, x + 1
        while i >= 0 and j < 8:
            if board[i][j] != ".":
                if board[i][j] in ["Q", "B"]:
                    print("YES")
                    board_checked = True
                break
            i -= 1
            j += 1
        if board_checked:
            continue
        # right down diagonal
        i, j = y + 1, x + 1
        while i < 8 and j < 8:
            if board[i][j] != ".":
                if board[i][j] in ["Q", "B"]:
                    print("YES")
                    board_checked = True
                break
            i += 1
            j += 1
        if board_checked:
            continue
        # weird pawn poses
        if y < 8:
            if x > 0 and board[y + 1][x - 1] == "P":
                print("YES")
                continue
            elif x < 8 and board[y + 1][x + 1] == "P":
                print("YES")
                continue
            # no double step pawn in task

        # weird knight poses
        # up
        if y > 1:
            if x > 0 and board[y - 2][x - 1] == "N":
                print("YES")
                continue
            elif x < 8 and board[y - 2][x + 1] == "N":
                print("YES")
                continue
        # down
        if y < 6:
            if x > 0 and board[y + 2][x - 1] == "N":
                print("YES")
                continue
            elif x < 8 and board[y + 2][x + 1] == "N":
                print("YES")
                continue

        # left
        if x > 1:
            if y > 0 and board[y - 1][x - 2] == "N":
                print("YES")
                continue
            elif y < 8 and board[y + 1][x - 2] == "N":
                print("YES")
                continue

        # right
        if x < 6:
            if y > 0 and board[y - 1][x + 2] == "N":
                print("YES")
                continue
            elif y < 8 and board[y + 1][x + 2] == "N":
                print("YES")
                continue
        print("NO")


main()
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted16ms3380 KiB
subtask20/11
2Runtime error17ms3484 KiB
3Runtime error17ms3728 KiB
4Runtime error17ms3572 KiB
5Runtime error17ms3388 KiB
subtask30/12
6Runtime error17ms3508 KiB
7Runtime error17ms3328 KiB
8Runtime error17ms3400 KiB
9Runtime error17ms3384 KiB
subtask40/15
10Runtime error17ms3384 KiB
11Accepted17ms3384 KiB
12Runtime error17ms3480 KiB
13Runtime error18ms3384 KiB
subtask50/16
14Accepted17ms3376 KiB
15Accepted17ms3384 KiB
16Runtime error17ms3384 KiB
17Runtime error17ms3388 KiB
subtask60/46
18Accepted17ms3376 KiB
19Runtime error17ms3384 KiB
20Runtime error17ms3396 KiB
21Runtime error18ms3380 KiB
22Runtime error17ms3384 KiB
23Runtime error17ms3584 KiB
24Runtime error17ms3580 KiB
25Runtime error17ms3384 KiB
26Runtime error17ms3568 KiB