結果
問題 | No.179 塗り分け |
ユーザー |
![]() |
提出日時 | 2019-07-02 02:34:56 |
言語 | D (dmd 2.109.1) |
結果 |
AC
|
実行時間 | 15 ms / 3,000 ms |
コード長 | 1,136 bytes |
コンパイル時間 | 706 ms |
コンパイル使用メモリ | 105,696 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-06-22 01:50:51 |
合計ジャッジ時間 | 1,959 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 6 |
other | AC * 40 |
ソースコード
import std.stdio, std.algorithm, std.conv, std.array, std.string, std.math, std.typecons, std.numeric; void main() { auto hw = readln.split.to!(int[]); auto H = hw[0]; auto W = hw[1]; char[][] MAP; MAP.length = H; int b; foreach (i; 0..H) { MAP[i].length = W; foreach (j, e; readln.chomp.to!(char[])) { if (e == '#') ++b; MAP[i][j] = e; } } if (b == 0 || b%2 == 1) { writeln("NO"); return; } auto MEMO = new int[][](H, W); int c; foreach (y; -H..H) { foreach (x; -W..W) { if (x == 0 && y == 0) continue; ++c; int d; foreach (i; 0..H) { foreach (j; 0..W) { if (MAP[i][j] != '#' || MEMO[i][j] == c) continue; if (i+y < 0 || i+y >= H || j+x < 0 || j+x >= W || MAP[i+y][j+x] != '#') goto next; MEMO[i][j] = MEMO[i+y][j+x] = c; d += 2; } } writeln("YES"); return; next: } } writeln("NO"); }