結果
問題 | No.179 塗り分け |
ユーザー |
|
提出日時 | 2017-06-09 11:15:51 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 9 ms / 3,000 ms |
コード長 | 1,475 bytes |
コンパイル時間 | 1,521 ms |
コンパイル使用メモリ | 169,224 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-07-23 14:43:16 |
合計ジャッジ時間 | 2,681 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 6 |
other | AC * 40 |
ソースコード
#include "bits/stdc++.h" using namespace std; #define FOR(i,j,k) for(int (i)=(j);(i)<(int)(k);++(i)) #define rep(i,j) FOR(i,0,j) #define each(x,y) for(auto &(x):(y)) #define mp make_pair #define mt make_tuple #define all(x) (x).begin(),(x).end() #define debug(x) cout<<#x<<": "<<(x)<<endl #define smax(x,y) (x)=max((x),(y)) #define smin(x,y) (x)=min((x),(y)) #define MEM(x,y) memset((x),(y),sizeof (x)) #define sz(x) (int)(x).size() #define pb push_back typedef long long ll; typedef pair<int, int> pii; typedef vector<int> vi; typedef vector<ll> vll; int H, W, c[50][50]; string S[50]; int main(){ ios::sync_with_stdio(false); cin.tie(0); cin >> H >> W; bool no_block = true; rep(y, H) { cin >> S[y]; rep(x, W)if (S[y][x] == '#')no_block = false; } if (no_block) { cout << "NO" << endl; return 0; } FOR(dy, -H + 1, H)FOR(dx, -W + 1, W) if (dy != 0 || dx != 0) { MEM(c, 0); bool ok = [&] { rep(y, H)rep(x, W) if (S[y][x] == '#' && !c[y][x]) { c[y][x] = 1; int ny = y + dy, nx = x + dx; if (ny >= H || nx >= W || ny < 0 || nx < 0 || S[ny][nx] != '#' || c[ny][nx]) { return false; } c[ny][nx] = 1; } return true; }(); if (ok) { cout << "YES" << endl; return 0; } } cout << "NO" << endl; }