結果
| 問題 |
No.179 塗り分け
|
| コンテスト | |
| ユーザー |
nbisco
|
| 提出日時 | 2017-02-24 00:58:35 |
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
| 結果 |
AC
|
| 実行時間 | 732 ms / 3,000 ms |
| コード長 | 1,226 bytes |
| コンパイル時間 | 256 ms |
| コンパイル使用メモリ | 12,800 KB |
| 実行使用メモリ | 11,008 KB |
| 最終ジャッジ日時 | 2024-07-23 14:42:04 |
| 合計ジャッジ時間 | 5,692 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 6 |
| other | AC * 40 |
ソースコード
def move_ok(_S, H, W, count, diff):
S = [[_S[i][j] for j in range(W)] for i in range(H)]
for i in range(H):
for j in range(W):
if S[i][j] == ".":
continue
elif i+diff[0] < H and j+diff[1] < W \
and S[i+diff[0]][j+diff[1]] == "#":
count -= 2
S[i+diff[0]][j+diff[1]] = "."
return count == 0
def main():
H, W = map(int, input().split(" "))
S = []
for i in range(H):
S.append(list(input()))
start = [-1,-1]
count = 0
for i in range(H):
count += S[i].count("#")
if start[0] == -1:
for j in range(W):
if S[i][j] == "#":
start[0] = i
start[1] = j
break
if count % 2 != 0:
print("NO")
return
for i in range(H):
for j in range(W):
if start[0] == i and start[1] == j:
continue
if S[i][j] == ".":
continue
diff = (i-start[0], j-start[1])
if move_ok(S, H, W, count, diff):
print("YES")
return
print("NO")
if __name__ == "__main__":
main()
nbisco