Submission #742659

#TimeUsernameProblemLanguageResultExecution timeMemory
742659speedyArdaStreet Lamps (APIO19_street_lamps)C++14
40 / 100
283 ms26428 KiB
#include "bits/stdc++.h" using namespace std; const int MAXN = 3e5+5; vector< pair<string, pair<int, int> > > queries(MAXN); string stats[MAXN]; int main() { int n, q; cin >> n >> q; string in; cin >> in; in = " " + in; stats[0] = in; int maxdiff = 0; int ltog = 0, fque = 1e9; for(int i = 1; i <= q; i++) { cin >> queries[i].first; if(queries[i].first == "toggle") { cin >> queries[i].second.first; ltog = i; } else { cin >> queries[i].second.first >> queries[i].second.second; maxdiff = max(maxdiff, queries[i].second.second - queries[i].second.first); fque = min(fque, i); } } if(max(n, q) <= 100) // Subtask 1 { for(int i = 1; i <= q; i++) { if(queries[i].first == "toggle") { in[queries[i].second.first] = (in[queries[i].second.first] == '1' ? '0' : '1'); stats[i] = in; } else { stats[i] = in; int pos = 0; for(int ava = 0; ava < i; ava++) { string temp = stats[ava]; int beg = queries[i].second.first; int end = queries[i].second.second; while(beg < end) { if(temp[beg] == '1') beg++; else break; } if(beg == end) pos++; } cout << pos << "\n"; } } } else { if(maxdiff == 1) // Subtask 2 { vector<int> roads(n+5, 0); vector<int> last(n+5, 0); for(int i = 1; i <= q; i++) { int idx = queries[i].second.first; if(queries[i].first == "toggle") { if(in[idx] == '1') { roads[idx] += i - last[idx]; in[idx] = '0'; } else { last[idx] = i; in[idx] = '1'; } } else { int val = roads[idx]; if(in[idx] == '1') { val += i - last[idx]; } cout << val << "\n"; } } } else if(ltog < fque) // Subtask 4 { } else { } } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...