Submission #885932

#TimeUsernameProblemLanguageResultExecution timeMemory
885932dostsMonkey and Apple-trees (IZhO12_apple)C++17
0 / 100
17 ms6832 KiB
#include <bits/stdc++.h> #pragma GCC optimize "O3,unroll-loops" using namespace std; #define sp << " " << //#define int long long #define vi vector<int> #define F(xxx,yyy) for (int xxx=1;xxx<=yyy;xxx++) #define pii pair<int,int> #define pb push_back const int N = 2e5+1; struct Node { Node* c[2]; int sum = 0,l,r; bool lazy = 0; Node(int a,int b) { c[0] = c[1] = NULL; l = a; r = b; } void apply() { if (lazy) sum = r-l+1; } void extend() { int m = (l+r) >> 1; if (c[0]==NULL) c[0] = new Node(l,m); if (c[1]==NULL) c[1] = new Node(m+1,r); } void push() { apply(); if (l^r) { extend(); c[0]->lazy |= lazy; c[1]->lazy |= lazy; } } void upd(int L,int R) { push(); if (l > R || r < L) return; if (l >= L && r <= R) { lazy = 1; push(); return; } int m = (l+r) >> 1; if (m >= L) c[0]->upd(L,R); if (m+1 <= R) c[1]->upd(L,R); sum=c[0]->sum+c[1]->sum; } int query(int L,int R) { if (l > R || r < L) return 0; push(); if (l >= L && r <= R) return sum; int rr = 0; int m = (l+r) >> 1; if (m >= L) rr+=c[0]->query(L,R); if (m+1 <= R) rr+=c[1]->query(L,R); return rr; } }; void solve() { int q; cin >> q; int c = 0; Node* root = new Node(1,1e9); while (q--) { int t,l,r; cin >> t >> l >> r; if (t == 1) { c = root->query(l+c,r+c); cout << c << endl; } else root->upd(l+c,r+c); } } signed main() { ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); #ifdef Local freopen("in","r",stdin); freopen("out","w",stdout); #endif int t = 1; //cin >> t; F(i,t) solve(); }
#Verdict Execution timeMemoryGrader output
Fetching results...