#include <bits/stdc++.h>
#include <random>
using namespace std;
using ll = int;
using ld = long double;
ll INF = 1e9;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
ll n, m;
cin >> n >> m;
vector<string> s(n);
vector<vector<ll>> pref(n, vector<ll>(m));
for (ll i = 0; i < n; i++) {
cin >> s[i];
}
ll cnt = 0;
for (ll i = 0; i < n; i++) {
for (ll j = 0; j < m; j++) {
if (s[i][j] == 'R') {
if (j + 2 < m) {
if (s[i][j + 1] == 'G' && s[i][j + 2] == 'W') {
pref[i][j]++;
pref[i][j + 1]++;
pref[i][j + 2]++;
cnt++;
}
}
if (i + 2 < n) {
if (s[i + 1][j] == 'G' && s[i + 2][j] == 'W') {
pref[i][j]++;
pref[i + 1][j]++;
pref[i + 2][j]++;
cnt++;
}
}
}
}
}
while (true) {
ll c = 0;
for (ll i = 0; i < n; i++) {
for (ll j = 0; j < m; j++) {
if (pref[i][j] == 2) {
c++;
}
}
}
if (c == 0) {
break;
}
ll mx = 0;
ll ind = -1;
for (ll i = 0; i < n; i++) {
for (ll j = 0; j < m; j++) {
if (s[i][j] == 'R') {
if (j + 2 < m) {
if (s[i][j + 1] == 'G' && s[i][j + 2] == 'W') {
ll d = pref[i][j] + pref[i][j + 1] + pref[i][j + 2];
if (mx < d) {
mx = d;
ind = i * m + j;
}
}
}
if (i + 2 < n) {
if (s[i + 1][j] == 'G' && s[i + 2][j] == 'W') {
ll d = pref[i][j] + pref[i + 1][j] + pref[i + 2][j];
if (mx < d) {
mx = d;
ind = i * m + j;
}
}
}
}
}
}
cnt--;
ll i = ind / m;
ll j = ind % m;
if (j + 2 < m) {
if (s[i][j + 1] == 'G' && s[i][j + 2] == 'W') {
ll d = pref[i][j] + pref[i][j + 1] + pref[i][j + 2];
if (d == mx) {
pref[i][j]--;
pref[i][j + 1]--;
pref[i][j + 2]--;
continue;
}
}
}
if (i + 2 < n) {
if (s[i + 1][j] == 'G' && s[i + 2][j] == 'W') {
ll d = pref[i][j] + pref[i + 1][j] + pref[i + 2][j];
if (d == mx) {
pref[i][j]--;
pref[i + 1][j]--;
pref[i + 2][j]--;
continue;
}
}
}
}
cout << cnt;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |