結果
| 問題 | No.3803 Crossword Key Checker |
| ユーザー |
kidodesu
|
| 提出日時 | 2026-11-14 15:10:33 |
| 言語 | PyPy3 (8.0.1 + ACL) |
| 結果 |
WA
不安定
|
| 実行時間 | - |
| コード長 | 1,440 bytes |
| 記録 | |
| コンパイル時間 | 87 ms |
| コンパイル使用メモリ | 64,568 KB |
| 実行使用メモリ | 61,276 KB |
| 最終ジャッジ日時 | 2026-11-14 15:10:39 |
| 合計ジャッジ時間 | 5,431 ms |
|
ジャッジサーバーID (参考情報) |
judge4_0 / judge5_0 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 46 WA * 1 |
ソースコード
def main():
h, w = list(map(int, input().split()))
S = ["#"*(w+2)] + ["#"+input()+"#" for _ in range(h)] + ["#"*(w+2)]
h += 2
w += 2
k = int(input())
T = [list(map(str, input().split())) for _ in range(k)]
A = [[S[y][x] for x in range(w)] for y in range(h)]
ki = 0
for y in range(1, h-1):
for x in range(1, w-1):
f0 = f1 = 0
if S[y][x-1] + S[y][x] + S[y][x+1] == "#..":
f0 = 1
if S[y-1][x] + S[y][x] + S[y+1][x] == "#..":
f1 = 1
if f0 or f1:
s0, s1 = T[ki]
ki += 1
if f0:
for nx in range(x, x+len(s0)):
if A[y][nx] == ".":
A[y][nx] = s0[nx-x]
elif A[y][nx] != s0[nx-x]:
return "No"
if A[y][x+len(s0)] == ".":
return "No"
if f1:
for ny in range(y, y+len(s1)):
if A[ny][x] == ".":
A[ny][x] = s1[ny-y]
elif A[ny][x] != s1[ny-y]:
return "No"
if A[y+len(s1)][x] == ".":
return "No"
for y in range(h):
for x in range(w):
if A[y][x] == ".":
return "No"
return "Yes"
print(main())
kidodesu