Submission #1293878

#TimeUsernameProblemLanguageResultExecution timeMemory
1293878fairkrashDango Maker (JOI18_dango_maker)C++20
33 / 100
2105 ms233372 KiB
#include <bits/stdc++.h> #include <random> using namespace std; using ll = int; using ld = long double; ll INF = 1e9; vector<vector<ll>> g; vector<ll> p; vector<ll> used; ll tt = 1; bool kun(ll v) { if (used[v] == tt) { return false; } used[v] = tt; for (ll i = 0; i < g[v].size(); i++) { ll to = g[v][i]; if (p[to] == -1 || kun(p[to])) { p[to] = v; return true; } } return false; } 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, -1)); for (ll i = 0; i < n; i++) { cin >> s[i]; } ll cnt1 = 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] = cnt1; pref[i][j + 1] = cnt1; pref[i][j + 2] = cnt1; cnt1++; } } } } } ll cnt2 = 0; for (ll i = 0; i < n; i++) { for (ll j = 0; j < m; j++) { if (s[i][j] == 'R') { if (i + 2 < n) { if (s[i + 1][j] == 'G' && s[i + 2][j] == 'W') { vector<ll> q; if (pref[i][j] != -1) { q.push_back(pref[i][j]); } if (pref[i + 1][j] != -1) { q.push_back(pref[i + 1][j]); } if (pref[i + 2][j] != -1) { q.push_back(pref[i + 2][j]); } g.push_back(q); cnt2++; } } } } } p.assign(cnt1 + 1, -1); used.assign(cnt2 + 1, 0); ll col = cnt1 + cnt2; ll d = 0; for (ll i = 0; i < cnt2; i++) { tt++; if (kun(i)) { d++; } } cout << col - d; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...