Submission #653513

#TimeUsernameProblemLanguageResultExecution timeMemory
653513amukkalirMonkey and Apple-trees (IZhO12_apple)C++17
0 / 100
99 ms18812 KiB
#include "bits/stdc++.h" 
using namespace std;
typedef long long ll; 

const ll nax = 1e6; 
ll tree[4*nax+5]; 
bool lazy[4*nax+5]; 
ll n; 
 
void cek (ll idx, ll l, ll r) {
    if(!lazy[idx]) return; 
    tree[idx] = r-l+1; 
    if(r!=l) {
        lazy[idx<<1] = 1; 
        lazy[idx<<1|1] = 1; 
    }
    lazy[idx]=0; 
}
 
void upd (ll fr, ll to, ll idx = 1, ll l = 1, ll r = nax) {
    cek (idx, l, r) ; 
    if (r < fr || l > to) return; 
    else if (fr <= l && r <= to) {
        lazy[idx]=1; 
        cek(idx,l,r); 
    } else {
        ll m = (l+r) >> 1; 
        upd(fr, to, idx<<1, l, m); 
        upd(fr, to, idx<<1|1, m+1, r); 
        tree[idx] = tree[idx<<1] + tree[idx<<1|1]; 
    }
}
 
long long get (ll fr, ll to, ll idx = 1, ll l=1, ll r=nax) {
    cek(idx, l, r); 
    if (r < fr || l > to) return 0; 
    else if (fr <= l && r <= to) return tree[idx]; 
    else {
        ll m = (l+r) >> 1; 
        return get(fr, to, idx<<1, l, m) + get (fr, to, idx<<1|1, m+1, r); 
    }
}
 
signed main () {    
    ll m; cin >> m; 
    long long c = 0; 
    while (m--) {
        ll tp, l, r; 
        cin >> tp >> l >> r; 
        l += c; r += c; 
        if (tp == 1) {
            long long res = get(l,r);
            cout << res << "\n"; 
            c = res; 
        } else {
            upd(l,r);
        }
    }    
}
 
/*
*/
#Verdict Execution timeMemoryGrader output
Fetching results...