結果
| 問題 |
No.179 塗り分け
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2024-03-18 11:19:06 |
| 言語 | C++17(gcc12) (gcc 12.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 16 ms / 3,000 ms |
| コード長 | 1,397 bytes |
| コンパイル時間 | 11,007 ms |
| コンパイル使用メモリ | 279,428 KB |
| 最終ジャッジ日時 | 2025-02-20 07:13:40 |
|
ジャッジサーバーID (参考情報) |
judge2 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 6 |
| other | AC * 40 |
ソースコード
#pragma GCC optimize("O3")
#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")
#pragma GCC target("avx,avx2")
#include <bits/stdc++.h>
#define INF 1000000001LL
#define LNF 1000000000000000001LL
#define MOD 1000000007LL
#define MAX 502
#define long long long
#define all(x) x.begin(),x.end()
using namespace std;
int n,m;
bool check(vector<string> &pan, int x, int y)
{
bool vis[n][m];
memset(vis,0,sizeof vis);
int cnt = 0;
for(int i = 0; i<n; i++)
{
for(int j = 0; j<m; j++)
{
if(pan[i][j] == '#')
cnt++;
if(vis[i][j] || pan[i][j] == '.')
continue;
vis[i][j] = true;
if(i+x >=n || j+y >= m || i+x < 0 || j+y < 0)
return false;
if(vis[i+x][j+y] || pan[i+x][j+y] == '.')
return false;
vis[i+x][j+y] = true;
}
}
if(cnt < 2 || (cnt&1))
return false;
return true;
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cin >> n >> m;
vector<string> pan(n);
for(int i = 0; i<n; i++)
cin >> pan[i];
for(int i = 0; i<n; i++)
{
for(int j = -m; j<m; j++)
{
if(check(pan,i,j))
{
cout << "YES\n";
return 0;
}
}
}
cout << "NO\n";
return 0;
}