Submission #384635

# Submission time Handle Problem Language Result Execution time Memory
384635 2021-04-01T23:48:28 Z eyangch Monkey and Apple-trees (IZhO12_apple) C++17
0 / 100
521 ms 262148 KB
#include <bits/stdc++.h>
#define endl "\n"
#define eat cin
#define moo cout

using namespace std;

struct segt{
    int l, r, mid;
    segt *a, *b;
    int val, lazy;
    segt(int vl, int vr){
        l = vl, r = vr, mid = (l+r)/2;
        a = b = NULL;
        if(l < r){
            val = 0;
            lazy = 0;
        }
    }
    void c_a(){
        a = new segt(l, mid);
    }
    void c_b(){
        b = new segt(mid+1, r);
    }
    void push(){
        if(lazy == 0) return;
        if(!a) c_a();
        if(!b) c_b();
        val = (r - l + 1) * lazy;
        if(l < r){
            a->lazy = lazy;
            b->lazy = lazy;
        }
        lazy = 0;
    }
    void upd(int vl, int vr){
        push();
        if(l > r || l > vr || r < vl) return;
        if(l >= vl && r <= vr){
            lazy = 1;
            push();
        }else{
            if(vl <= mid || a){
                if(!a) c_a();
                a->upd(vl, vr);
            }
            if(vr > mid || b){
                if(!b) c_b();
                b->upd(vl, vr);
            }
            val = (a ? a->val : 0) + (b ? b->val : 0);
        }
        //moo << val << " " << l << " " << r << " " << vl << " " << vr << " " << (a == NULL) << " " << (b == NULL) << endl;
    }
    int qry(int vl, int vr){
        push();
        if(l > r || l > vr || r < vl) return 0;
        //moo << val << " " << l << " " << r << " " << vl << " " << vr << " " << (a == NULL) << " " << (b == NULL) << endl;
        if(l >= vl && r <= vr) return val;
        return (a ? a->qry(vl, vr) : 0) + (b ? b->qry(vl, vr) : 0);
    }
};

segt *s;
int M;

int32_t main(){
    eat.tie(0) -> sync_with_stdio(0);
    s = new segt(1, 1e9);
    eat >> M;
    int c = 0;
    for(int i = 0; i < M; i++){
        int d, x, y; eat >> d >> x >> y;
        if(d == 1){
            c = s->qry(x+c, y+c);
            moo << c << endl;
        }else{
            s->upd(x+c, y+c);
        }
    }
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 364 KB Output is correct
2 Correct 1 ms 364 KB Output is correct
3 Correct 1 ms 364 KB Output is correct
4 Correct 24 ms 9580 KB Output is correct
5 Correct 29 ms 11628 KB Output is correct
6 Correct 35 ms 11372 KB Output is correct
7 Correct 37 ms 11628 KB Output is correct
8 Correct 231 ms 87916 KB Output is correct
9 Correct 485 ms 151704 KB Output is correct
10 Correct 503 ms 167680 KB Output is correct
11 Correct 514 ms 180332 KB Output is correct
12 Correct 521 ms 185964 KB Output is correct
13 Correct 494 ms 216256 KB Output is correct
14 Correct 493 ms 218344 KB Output is correct
15 Runtime error 506 ms 262148 KB Execution killed with signal 9
16 Halted 0 ms 0 KB -