Submission #653358

#TimeUsernameProblemLanguageResultExecution timeMemory
653358amukkalirMonkey and Apple-trees (IZhO12_apple)C++17
0 / 100
1 ms340 KiB
#include "bits/stdc++.h" 
using namespace std;

const int nax = 1e6; 
int tree[4*nax+5]; 
bool lazy[4*nax+5]; 
int n; 

void cek (int idx, int l, int 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 (int fr, int to, int idx = 1, int l = 1, int r = n) {
    cek (idx, l, r) ; 
    if (r < fr || l > to) return; 
    else if (fr <= l && r <= to) {
        lazy[idx]=1; 
        cek(idx,l,r); 
    } else {
        int 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 (int fr, int to, int idx = 1, int l=1, int r=n) {
    cek(idx, l, r); 
    if (r < fr || l > to) return 0; 
    else if (fr <= l && r <= to) return tree[idx]; 
    else {
        int m = (l+r) >> 1; 
        return get(fr, to, idx<<1, l, m) + get (fr, to, idx<<1|1, m+1, r); 
    }
}

signed main () {
    n = 1e6; 
    int m; cin >> m; 
    long long c = 0; 
    while (m--) {
        int 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...