結果
問題 | No.179 塗り分け |
ユーザー |
![]() |
提出日時 | 2015-04-09 17:21:51 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 8 ms / 3,000 ms |
コード長 | 906 bytes |
コンパイル時間 | 679 ms |
コンパイル使用メモリ | 66,932 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-07-23 14:28:37 |
合計ジャッジ時間 | 1,700 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 6 |
other | AC * 40 |
ソースコード
#include <iostream> #include <algorithm> #include <cstdio> #include <cstdlib> #include <string> #include <vector> #define repf(x,fr,to) for(int (x)=(fr);(x)<(to);(x)++) #define rep(x,to) for(int (x)=0;(x)<(to);(x)++) #define sz(v) (int)(v).size() using namespace std; int main() { int h,w; cin >> h>>w; vector<string> s(h); rep(i,h) cin >> s[i]; vector<int> gy, gx; rep(i,h) rep(j,w) if(s[i][j]=='#') gy.push_back(i), gx.push_back(j); if(sz(gy) <2 || sz(gy) %2 ){ puts("NO");exit(0);} repf(i,1,sz(gy)){ int dy=gy[i]-gy[0], dx=gx[i]-gx[0]; auto ump = s; rep(j, sz(gy)){ if(ump[gy[j]][gx[j]] !='#') continue; int ny= gy[j] + dy, nx = gx[j] + dx; if(ny<0 || ny>=h || nx<0 || nx>=w) goto lpend; if(ump[ny][nx] =='#') ump[gy[j]][gx[j]] = ump[ny][nx] = 'A'; } rep(i,h) rep(j,w) if(ump[i][j]=='#') goto lpend; puts("YES"); exit(0); lpend: ; } puts("NO"); return 0; }