Submission #1204618

#TimeUsernameProblemLanguageResultExecution timeMemory
1204618LucaIlieMonochrome Points (JOI20_monochrome)C++20
0 / 100
0 ms328 KiB
#include <bits/stdc++.h> using namespace std; const int MAX_N = 2e5; int countB[MAX_N + 1], countW[MAX_N + 1]; int main() { int n; string s; cin >> n; n *= 2; cin >> s; for (int i = n - 1; i >= 0; i--) { countB[i] = countB[i + 1] + (s[i] == 'B'); countW[i] = countW[i + 1] + (s[i] == 'W'); } int freeB = 0, freeW = 0; queue<int> bs, ws; vector<pair<int, int>> pairs; for (int i = 0; i < n; i++) { freeB += (s[i] == 'B'); freeW += (s[i] == 'W'); if (freeB > countW[i + 1] || freeW > countB[i + 1]) { freeB -= (s[i] == 'B'); freeW -= (s[i] == 'W'); if (s[i] == 'B') { pairs.push_back({ws.front(), i}); ws.pop(); } else { pairs.push_back({bs.front(), i}); bs.pop(); } } else { if (s[i] == 'B') bs.push(i); else ws.push(i); } } int inter = 0; for (auto x: pairs) { for (auto y: pairs) { if (x.second >= y.second) continue; if (x.second > y.first && x.first < y.first) inter++; } } cout << inter << "\n"; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...