#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);
long long n, m;
cin >> n >> m;
vector<string> v(n);
for (long long i = 0; i < n; i++) {
cin >> v[i];
}
vector<vector<long long>> notans;
for (long long i = 0; i < n; ++i) {
for (long long j = 0; j < m-2; ++j) {
if (v[i][j] == 'R' && v[i][j+1] == 'G' && v[i][j+2] == 'W') {
vector<long long> p(3);
p[0] = i * m + j;
p[1] = i * m + (j+1);
p[2] = i * m + (j+2);
notans.push_back(p);
}
}
}
for (long long i = 0; i < n-2; ++i) {
for (long long j = 0; j < m; ++j) {
if (v[i][j] == 'R' && v[i+1][j] == 'G' && v[i+2][j] == 'W') {
vector<long long> p(3);
p[0] = i * m + j;
p[1] = (i+1) * m + j;
p[2] = (i+2) * m + j;
notans.push_back(p);
}
}
}
long long P = static_cast<long long>(notans.size());
if (P == 0) {
cout << 0 << "\n";
return 0;
}
long long ans = 0;
unsigned long long total = 1ULL << P;
for (unsigned long long mc = 0; mc < total; ++mc) {
vector<char> a(n*m, 0);
bool b = true;
long long nans = 0;
for (long long mi = 0; mi < P; ++mi) {
if (mc & (1ULL << mi)) {
auto &mp = notans[mi];
if (a[mp[0]] || a[mp[1]] || a[mp[2]]) {
b = false;
break;
}
a[mp[0]] = a[mp[1]] = a[mp[2]] = 1;
++nans;
}
}
if (b && nans > ans) {
ans = nans;
}
}
cout << ans << "\n";
return 0;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |