Submission #473055

#TimeUsernameProblemLanguageResultExecution timeMemory
473055ntabc05101Dango Maker (JOI18_dango_maker)C++14
0 / 100
1 ms312 KiB
#include<bits/stdc++.h> using namespace std; int main() { cin.tie(0)->sync_with_stdio(0); int n, m; cin >> n >> m; string a[n]; for (int i = 0; i < n; i++) { cin >> a[i]; } vector< vector<int> > adj; int cnt = 0; int vis[n][m]; memset(vis, -1, sizeof(vis)); for (int i = 0; i < n; i++) { for (int j = 0; j < m - 2; j++) { if (a[i][j] == 'R' && a[i][j + 1] == 'G' && a[i][j + 2] == 'W') { int cur = cnt; adj.push_back(vector<int>()); cnt++; if (i + 2 < n && a[i + 1][j] == 'G' && a[i + 2][j] == 'W') { int a = cnt; if (~vis[i + 1][j]) { a = vis[i + 1][j]; } else { adj.push_back(vector<int>()); vis[i][j] = vis[i + 1][j] = vis[i + 2][j] = cnt; cnt++; } adj[cur].push_back(a); adj[a].push_back(cur); } if (i + 1 < n && i && a[i + 1][j + 1] == 'W' && a[i - 1][j + 1] == 'R') { int a = cnt; if (~vis[i + 1][j + 1]) { a = vis[i + 1][j + 1]; } else { adj.push_back(vector<int>()); vis[i - 1][j + 1] = vis[i + 1][j + 1] = vis[i][j + 1] = cnt; cnt++; } adj[cur].push_back(a); adj[a].push_back(cur); } if (i > 1 && a[i - 2][j + 2] == 'R' && a[i - 1][j + 2] == 'G') { int a = cnt; if (~vis[i - 2][j + 2]) { a = vis[i - 2][j + 2]; } else { adj.push_back(vector<int>()); vis[i - 2][j + 2] = vis[i - 1][j + 2] = vis[i][j + 2] = cnt; cnt++; } adj[cur].push_back(a); adj[a].push_back(cur); } } } } /*for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { cout << setw(5) << vis[i][j]; } cout << "\n"; }*/ set< array<int, 2> > st; st.insert({0, -1}); for (int i = 0; i < cnt; i++) { auto it = --st.end(); if (adj[i].size() == 0) { st.insert({(*it)[0] + 1, i}); } for (auto &to: adj[i]) { if ((*it)[1] == to) { it--; } else { st.insert({(*it)[0] + 1, i}); break; } } while (st.size() > 4) { st.erase(st.begin()); } } int res = (*(--st.end()))[0]; for (int j = 0; j < m; j++) { for (int i = 0; i < n - 2; i++) { if (!(~vis[i][j]) && a[i][j] == 'R' && a[i + 1][j] == 'G' && a[i + 2][j] == 'W') { res++; } } } cout << res << endl; return 0; } /* 3 4 RGWR GRGG RGWW 4 4 RGWR GRRG WGGW WWWR 5 5 RGRGW GRRGW WGGWR RWRGW RGWGW */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...