結果
問題 |
No.179 塗り分け
|
ユーザー |
![]() |
提出日時 | 2023-10-15 20:02:18 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 303 ms / 3,000 ms |
コード長 | 1,206 bytes |
コンパイル時間 | 186 ms |
コンパイル使用メモリ | 82,784 KB |
実行使用メモリ | 77,184 KB |
最終ジャッジ日時 | 2024-09-16 22:06:43 |
合計ジャッジ時間 | 7,478 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 6 |
other | AC * 40 |
ソースコード
# 黒を平行移動2グループに分けられるか # 平行移動(di, dj)で全探索 # WA出た、djはマイナスもあるな # 黒が0のときもダメだ、黒のカウントが2以上の偶数チェック必要 H, W = map(int, input().split()) S = [] S_num = [] black_count = 0 for i in range(H): temp = input() S.append(temp) black_count += temp.count('#') s = [] for t in temp: if t == '.': s.append(0) else: s.append(1) S_num.append(s) if black_count == 0 or black_count%2 == 1: print('NO') exit() ans = 'NO' for di in range(0, H): for dj in range(1-W, W): if (di, dj) == (0, 0): continue #print('di', di, 'dj', dj) color = [[0]*W for i in range(H)] for i in range(H): for j in range(W): #print('i', i, 'j', j) if S_num[i][j] == 1 and 0<=i+di<H and 0<=j+dj<W: if color[i][j] == 0 and color[i+di][j+dj] == 0: color[i][j] = 1 color[i+di][j+dj] = 1 if S_num == color: #print(di, dj, color) ans = 'YES' print(ans)