結果
| 問題 |
No.179 塗り分け
|
| コンテスト | |
| ユーザー |
test16!
|
| 提出日時 | 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;
}
test16!