제출 #1293821

#제출 시각아이디문제언어결과실행 시간메모리
1293821fairkrashDango Maker (JOI18_dango_maker)C++20
13 / 100
1 ms580 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...