結果
問題 | No.179 塗り分け |
ユーザー |
|
提出日時 | 2025-02-20 08:48:01 |
言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 59 ms / 3,000 ms |
コード長 | 1,755 bytes |
コンパイル時間 | 3,983 ms |
コンパイル使用メモリ | 280,444 KB |
実行使用メモリ | 6,820 KB |
最終ジャッジ日時 | 2025-02-20 08:48:07 |
合計ジャッジ時間 | 5,610 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 6 |
other | AC * 40 |
ソースコード
#include <bits/stdc++.h> // #include <boost/multiprecision/cpp_int.hpp> using namespace std; // using bigint = boost::multiprecision::cpp_int; template <typename T> using min_priority_queue = priority_queue<T,vector<T>,greater<T>>; random_device seed_gen; mt19937 engine(seed_gen()); int64_t get_time_ns(){ struct::timespec t; clock_gettime(CLOCK_MONOTONIC, &t); return t.tv_sec * int64_t(1'000'000'000) + t.tv_nsec; } bool solve() { int h, w; cin >> h >> w; vector<string> S(h); for(auto &s : S) cin >> s; int cnt = 0; for(auto &s : S) for(auto &c : s) if(c == '#') cnt++; if(cnt == 0 || cnt % 2 != 0) return false; for(int di = 0; di < h; di++) { for(int dj = -w; dj < w; dj++) { if(di == 0 && dj == 0) continue; auto T = S; for(int i = 0; i < h; i++) { for(int j = 0; j < w; j++) { int ii = i + di; int jj = j + dj; if(ii < 0 || h <= ii || jj < 0 || w <= jj) continue; if(T[i][j] == '#' && T[ii][jj] == '#') { T[i][j] = 'R'; T[ii][jj] = 'B'; } } } bool b = true; for(int i = 0; i < h; i++) { for(int j = 0; j < w; j++) { if(T[i][j] == '#') b = false; } } if(b) return b; if(0) { cout << di << " " << dj << endl; for(auto s : T) cout << s << endl; } } } return false; } int main() { bool ans = solve(); if(ans) cout << "YES" << endl; else cout << "NO" << endl; return 0; }