Submission #1293874

#TimeUsernameProblemLanguageResultExecution timeMemory
1293874fairkrashDango Maker (JOI18_dango_maker)C++20
33 / 100
340 ms303448 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)); vector<vector<vector<ll>>> all(n, vector<vector<ll>>(m)); 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') { all[i][j].push_back(cnt1); all[i][j + 1].push_back(cnt1); all[i][j + 2].push_back(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; for (ll e = 0; e < all[i][j].size(); e++) { q.push_back(all[i][j][e]); } for (ll e = 0; e < all[i + 1][j].size(); e++) { q.push_back(all[i + 1][j][e]); } for (ll e = 0; e < all[i + 2][j].size(); e++) { q.push_back(all[i + 2][j][e]); } if (!q.empty()) { std::sort(q.begin(), q.end()); q.resize(std::unique(q.begin(), q.end()) - q.begin()); } 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...