Submission #1232840

#TimeUsernameProblemLanguageResultExecution timeMemory
1232840just_crowElection (BOI18_election)C++20
0 / 100
6 ms320 KiB
#include <bits/stdc++.h> using namespace std; vector<int> solutions; int main() { int n; cin >> n; vector<char> el(n); for (int i = 0; i < n; ++i) { cin >> el[i]; } int q; cin >> q; for (int i = 0; i < q; ++i) { int a, b; cin >> a >> b; vector<int> removeclump, removeclump1; int currcs = 0; int currts = 0; bool cstate = true; vector<int> csandts; for (int i = a - 1; i < b; ++i) { if (el[i] == 'C' and !cstate) { removeclump.push_back(currts - currcs + min((removeclump.size() > 0 ? removeclump.back() : 0), 0)); csandts.push_back(currts); currcs = 1; currts = 0; cstate = true; } else if (el[i] == 'C') { ++currcs; } else if (el[i] == 'T') { if (cstate) { cstate = false; csandts.push_back(currcs); } ++currts; } } if (!cstate) { removeclump.push_back(currts - currcs + min((removeclump.size() > 0 ? removeclump.back() : 0), 0)); } if (currts != 0 and !cstate) { csandts.push_back(currts); } if (cstate and currcs != 0) { csandts.push_back(currcs); } // FROM BACK bool startt = (el[b - 1] == 'T'); int ts = 0; int crs = 0; for (int i = csandts.size() - 1; i >= 0; --i) { if (startt) { ts += csandts[i]; removeclump1.push_back(ts - crs + min((removeclump1.size() > 0 ? removeclump1.back() : 0), 0)); ts = 0; crs = 0; startt = false; } else { crs += csandts[i]; startt = true; } } // END BACK int sum = 0; int cs = removeclump.size(); for (int i = 0; i < cs; ++i) { sum += max(max(0, removeclump[i]), max(0, removeclump1[cs - i - 1])); } solutions.push_back(sum); } for (int i: solutions) { cout << i << endl; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...