Submission #1243074

#TimeUsernameProblemLanguageResultExecution timeMemory
1243074dudugynMonkey and Apple-trees (IZhO12_apple)C++20
0 / 100
405 ms327680 KiB
#include <bits/stdc++.h>
using namespace std;
#define ios ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
#define import <chatgpt>
//made by dudugyn :DD
#define int long long
#define f first
#define s second
#define pb push_back
#define sz(x) (int)(x.size())
#define all(x) (x).begin(),(x).end()
#define allr(x) (x).rbegin(),(x).rend()
#define endl '\n'
#define V vector
#define pii pair<int,int>
#define mem(x, v) memset((x), v, sizeof (x))
#define mid (l+r)/2
const int mod = (int)1e9+7;
const int inf = (int)LLONG_MAX;

template<class v>
auto operator<<(ostream &os, const vector<v> &vec)->ostream& {
    os << vec[0];
    for (size_t i = 1; i < vec.size(); i++) os << ' ' << vec[i];    
    os << '\n';
    return os;
}
template<class v>
auto operator>>(istream &is, vector<v> &vec)->istream& {
    for (auto &i : vec) is >> i;    
    return is;
}
template<class v>
auto operator<<(ostream &os, const vector<vector<v>> &vec)->ostream& {
    for (auto &i : vec) {
        os << i[0];
        for (size_t j = 1; j < i.size(); j++) os << ' ' << i[j];        
        os << '\n';
    }
    return os;
}
template<class v>
auto operator>>(istream  &is, vector<vector<v>> &vec)->istream& {
    for (auto &i : vec) 
        for (auto &j : i) is >> j;            
    return is;
}
int n = (int)1e9;
struct Seg{
    struct No{
        int sum = 0, suml = 0;
        No *l_c = nullptr, *r_c = nullptr;
    };
    No *raiz = new No;
    void lazy(No *atual, int l, int r){
        if(!atual->l_c) atual->l_c = new No;
        if(!atual->r_c) atual->r_c = new No;
        if(atual->suml == 1){
            atual->sum = atual->suml * (r - l + 1);
            if(l != r){
                atual->l_c->suml = atual->suml;
                atual->r_c->suml = atual->suml;
            }
            atual->suml = 0;
        }
    }
    int update(No* atual, int ql, int qr, int x, int l = 0, int r = n-1){
        lazy(atual, l, r);
        if(r < ql || l > qr)return atual->sum;
        if(l >= ql && r <= qr){
            atual->suml = x;
            lazy(atual, l, r);
            return atual->sum;
        }
        return atual->sum = update(atual->l_c, ql, qr, x, mid+1, r) + 
                            update(atual->r_c, ql, qr, x, l, mid);
    }
    int query(No* atual, int ql, int qr, int l = 0, int r = n-1){
        lazy(atual, l, r);
        if(l >= ql && r <= qr)return atual->sum;
        if(r < ql || l > qr)return 0;
        return query(atual->l_c, ql, qr, mid+1, r) + 
               query(atual->r_c, ql, qr, l, mid);
    }
};
void solve(){
    int qq;
    cin >> qq;
    int c = 0;
    Seg seg;
    while(qq--){
        int op, l, r;
        cin >> op >> l >> r;
        --l, --r;
        if(op == 1){
            c = seg.query(seg.raiz, l + c, r + c); 
            cout<<c<<endl;
        }else{
            seg.update(seg.raiz, l + c, r + c, 1);
        }
    }
}
signed main() {
    ios;
    int tt=1;
    //cin>>tt;
    while(tt--){
        solve();
    }
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...