Submission #479062

#TimeUsernameProblemLanguageResultExecution timeMemory
479062MohammadAghilMonkey and Apple-trees (IZhO12_apple)C++14
100 / 100
414 ms207176 KiB
#include <bits/stdc++.h> 
using  namespace std;
typedef  long long ll;
typedef  pair<int, int> pp;
#define  rep(i,l,r) for(int i = (l); i < r; i++)
#define  per(i,r,l) for(int i = (r); i >= l; i--)
#define  all(x) x.begin(), x.end()
#define  sz(x) (int)(x).size()
#define  pb push_back
#define  ff first
#define  ss second 
 
const ll mod = 998244353, maxn = 2e5 + 1, maxk = 30, inf = 1e9 + 5;

struct Node{
    int lx, rx, sum = 0, lazy = -1;
    Node *lc = 0, *rc = 0;
    Node(int lx, int rx): lx(lx), rx(rx){}
    void push(){
        sum = rx - lx;
        lazy = 1;
    }
    void shift(){
        int mid = (lx + rx) >> 1;
        if(!lc) lc = new Node(lx, mid);
        if(!rc) rc = new Node(mid, rx);
        if(lazy != -1){
            lc->push();
            rc->push();
            lazy = -1;
        }
    }
    int query(int l, int r){
        if(l <= lx && r >= rx) return sum;
        if(l >= rx || r <= lx) return 0;
        shift();
        int mid = (lx + rx) >> 1;
        return lc->query(l, r) + rc->query(l, r);
    }
    void upd(int l, int r){
        if(l <= lx && r >= rx) return push();
        if(l >= rx || r <= lx) return;
        shift();
        int mid = (lx + rx) >> 1;
        lc->upd(l, r), rc->upd(l, r);
        sum = lc->sum + rc->sum;
    }
};

int main(){
    cin.tie(0) -> sync_with_stdio(0);
    Node seg(0, inf);
    int q; cin >> q;
    int c = 0;
    while(q--){
        int t, l, r; cin >> t >> l >> r;
        if(t == 1) cout << (c = seg.query(c + l - 1,c + r)) << '\n';
        else seg.upd(c + l - 1,c + r);
    }
    return 0;
}

Compilation message (stderr)

apple.cpp: In member function 'int Node::query(int, int)':
apple.cpp:37:13: warning: unused variable 'mid' [-Wunused-variable]
   37 |         int mid = (lx + rx) >> 1;
      |             ^~~
apple.cpp: In member function 'void Node::upd(int, int)':
apple.cpp:44:13: warning: unused variable 'mid' [-Wunused-variable]
   44 |         int mid = (lx + rx) >> 1;
      |             ^~~
#Verdict Execution timeMemoryGrader output
Fetching results...