Submission #410675

#TimeUsernameProblemLanguageResultExecution timeMemory
410675dynam1cStreet Lamps (APIO19_street_lamps)C++17
20 / 100
223 ms12144 KiB
//#pragma comment(linker, "/stack:200000000") //#pragma GCC optimize("Ofast") //#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native") #include <bits/stdc++.h> using namespace std; typedef long long ll; #define endl "\n" #define all(c) (c).begin(),(c).end() // when you ponder, divide and conquer struct RMQ { int n; vector<int> seg; RMQ(vector<int> arr) : n(arr.size()), seg(2*n) { for (int i = 0; i < n; i++) seg[i+n] = arr[i]; for (int i = n-1; i > 0; i--) seg[i] = max(seg[i<<1], seg[i<<1|1]); } int query(int l, int r) { int acc = INT_MIN; for (l += n, r += n; l != r; l >>= 1, r >>= 1) { if (l&1) acc = max(acc, seg[l++]); if (r&1) acc = max(acc, seg[--r]); } return acc; } void update(int i, int x) { for (seg[i += n] = x; i > 1; i >>= 1) seg[i>>1] = max(seg[i], seg[i^1]); } }; signed main() { // freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout); std::ios::sync_with_stdio(false); cin.tie(0); int n, q; cin >> n >> q; string s; cin >> s; vector<int> time(n); for (int i = 0; i < n; i++) time[i] = s[i] == '1' ? 0 : 1e6; RMQ rmq(time); for (int qq = 0; qq < q; qq++) { string t; cin >> t; if (t == "query") { int l, r; cin >> l >> r; l--, r--; cout << max(qq+1 - rmq.query(l, r), 0) << endl; } if (t == "toggle") { int i; cin >> i; i--; rmq.update(i, qq+1); } } } /* --- PSolving --- * Simplifying (getting rid of variables, conditions, code logic, etc.) * Reframing * Solving a subtask (subgoal, aux. problem, removing a condition or fixing a parameter, etc.) * Inducing * Divide and conquer * Working backwards * Visual intuition * !! Reductions don't have to be specializations, they can be generalizations */
#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...