11761 | 2024-11-09 15:26:46 | balint | Stefan sakkmesteri ambíciói | python3 | Hibás válasz 23/100 | 25ms | 3828 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 < 7:
if x > 0 and board[y + 1][x - 1] == "P":
print("YES")
continue
elif x < 7 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 < 7 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 < 7 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 < 7 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 < 7 and board[y + 1][x + 2] == "N":
print("YES")
continue
print("NO")
main()
Részfeladat | Összpont | Teszt | Verdikt | Idő | Memória | ||
---|---|---|---|---|---|---|---|
subtask1 | 0/0 | ||||||
1 | Elfogadva | 16ms | 3384 KiB | ||||
subtask2 | 11/11 | ||||||
2 | Elfogadva | 16ms | 3576 KiB | ||||
3 | Elfogadva | 17ms | 3732 KiB | ||||
4 | Elfogadva | 17ms | 3348 KiB | ||||
5 | Elfogadva | 25ms | 3640 KiB | ||||
subtask3 | 12/12 | ||||||
6 | Elfogadva | 17ms | 3384 KiB | ||||
7 | Elfogadva | 17ms | 3384 KiB | ||||
8 | Elfogadva | 17ms | 3568 KiB | ||||
9 | Elfogadva | 24ms | 3636 KiB | ||||
subtask4 | 0/15 | ||||||
10 | Elfogadva | 17ms | 3568 KiB | ||||
11 | Elfogadva | 17ms | 3384 KiB | ||||
12 | Hibás válasz | 17ms | 3672 KiB | ||||
13 | Hibás válasz | 23ms | 3640 KiB | ||||
subtask5 | 0/16 | ||||||
14 | Elfogadva | 17ms | 3384 KiB | ||||
15 | Elfogadva | 17ms | 3560 KiB | ||||
16 | Elfogadva | 17ms | 3388 KiB | ||||
17 | Hibás válasz | 23ms | 3640 KiB | ||||
subtask6 | 0/46 | ||||||
18 | Elfogadva | 17ms | 3376 KiB | ||||
19 | Elfogadva | 17ms | 3516 KiB | ||||
20 | Hibás válasz | 17ms | 3520 KiB | ||||
21 | Hibás válasz | 24ms | 3608 KiB | ||||
22 | Hibás válasz | 24ms | 3672 KiB | ||||
23 | Hibás válasz | 23ms | 3416 KiB | ||||
24 | Hibás válasz | 23ms | 3828 KiB | ||||
25 | Hibás válasz | 23ms | 3500 KiB | ||||
26 | Hibás válasz | 23ms | 3560 KiB |