結果
| 問題 |
No.1954 CHECKER×CHECKER(2)
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2022-05-20 22:48:39 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 49 ms / 1,000 ms |
| コード長 | 1,267 bytes |
| コンパイル時間 | 175 ms |
| コンパイル使用メモリ | 82,528 KB |
| 実行使用メモリ | 65,952 KB |
| 最終ジャッジ日時 | 2024-09-20 09:10:12 |
| 合計ジャッジ時間 | 2,526 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 29 |
ソースコード
h, w = map(int, input().split())
def f(s):
if s == "#": return 0
else: return 1
A = [list(map(f, input())) for _ in range(h)]
row = [0, h]
col = [0, w]
m = int(input())
for _ in range(m):
t, n = map(int, input().split())
if t == 1:
row.append(n)
else:
col.append(n)
row.sort()
col.sort()
R = []
C = []
for i in range(len(row) - 1):
R.append((row[i], row[i + 1]))
for i in range(len(col) - 1):
C.append((col[i], col[i + 1]))
if A[0][0] == 1:
A = [[A[i][j] ^ 1 for j in range(w)] for i in range(h)]
row_ = [False] * h
for i1, i2 in R:
se = set()
for i in range(i1, i2):
se.add(A[i][0] != i & 1)
if len(se) == 2:
print("No")
exit()
for s in se:
break
if s:
for i in range(i1, i2):
row_[i] = True
col_ = [False] * w
for i1, i2 in C:
se = set()
for i in range(i1, i2):
se.add(A[0][i] != i & 1)
if len(se) == 2:
print("No")
exit()
for s in se:
break
if s:
for i in range(i1, i2):
col_[i] = True
for i in range(h):
for j in range(w):
tmp = A[i][j] ^ row_[i] ^ col_[j]
if tmp != (i + j) & 1:
print("No")
exit()
print("Yes")