結果
問題 | No.179 塗り分け |
ユーザー |
|
提出日時 | 2016-10-19 22:31:03 |
言語 | C++11 (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 22 ms / 3,000 ms |
コード長 | 1,881 bytes |
コンパイル時間 | 507 ms |
コンパイル使用メモリ | 61,500 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-07-23 14:39:27 |
合計ジャッジ時間 | 2,266 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 6 |
other | AC * 40 |
ソースコード
#include <algorithm> #include <iostream> #include <string> #include <vector> #define REP(i, a, b) for (int i = a; i < (int)(b); i++) #define rep(i, n) REP(i, 0, n) using namespace std; int main() { int h, w; cin >> h >> w; string s; bool blank = false; bool flag = false; bool ans = false; int a[100][100]; rep(i, 100) { rep(j, 100) { a[i][j] = -1; } } rep(i, h) { cin >> s; rep(j, w) { if(s[j] == '#'){ a[i][j] = 1; blank = true; }else{ a[i][j] = 0; } } } if(!blank){ cout << "NO" << endl; return 0; } for(int ud=-50; ud<=50; ud++){ for(int lr=-50; lr<=50; lr++){ if(ud==0 and lr==0){ continue; } int done[100][100]; rep(i, 100) { rep(j, 100) { done[i][j] = 0; } } rep(i, h) { rep(j, w) { if(done[i][j] == 1){ continue; } if (a[i][j] == 1) { if(i+ud<0 or i+ud>=h or j+lr<0 or j+lr>=w){ flag = true; break; } if (a[i + ud][j + lr] != 1) { flag = true; break; } done[i+ud][j+lr] = 1; } } if (flag) { break; } } if (!flag) { ans = true; break; } else { flag = false; } } } cout << ((ans) ? "YES" : "NO") << endl; return 0; }