結果
問題 | No.179 塗り分け |
ユーザー |
👑 |
提出日時 | 2019-05-05 23:04:02 |
言語 | Lua (LuaJit 2.1.1734355927) |
結果 |
AC
|
実行時間 | 152 ms / 3,000 ms |
コード長 | 914 bytes |
コンパイル時間 | 462 ms |
コンパイル使用メモリ | 6,812 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-07-23 15:00:03 |
合計ジャッジ時間 | 3,376 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 6 |
other | AC * 40 |
ソースコード
local ior = io.input() local h, w = ior:read("*n", "*n", "*l") local t = {} local str = "" for i = 1, h do str = ior:read() for j = 1, w do t[j + (i - 1) * w] = str:sub(j, j) == "#" and 1 or 0 end end local function check(hdiff, wdiff) local tbl = {unpack(t)} local ret = true local painted = false for i_h = 1, h do for j_w = 1, w do local idx = j_w + (i_h - 1) * w if(tbl[idx] == 1) then painted = true if(h < i_h + hdiff or j_w + wdiff < 1 or w < j_w + wdiff) then ret = false break end local dst = idx + w * hdiff + wdiff if(tbl[dst] ~= 1) then ret = false break end tbl[dst] = 2 end end end return painted and ret end local isok = false for i = 0, h - 1 do for j = 1 - w, w - 1 do if(i ~= 0 or 0 < j) then if(check(i, j)) then isok = true break end end end end print(isok and "YES" or "NO")