Submission #1237325

#TimeUsernameProblemLanguageResultExecution timeMemory
1237325marOsumnjičeni (COCI21_osumnjiceni)C++20
Compilation error
0 ms0 KiB
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;

const int maxn = 4e5+10;
const int maxk = 20;

ll l[maxn], r[maxn], up[maxn][maxk];
ll st[4*maxn], lazy[4*maxn];
vector<ll> comp;

void propagate(ll id, ll l, ll r){
    if(lazy[id]){
        ll mid = (l+r)/2;
        update(id*2, l, mid, l, mid, lazy[id]);
        update(id*2+1, mid+1, r, mid+1, r, lazy[id]);
        lazy[id] = 0;
    }
}

void update(ll id, ll l, ll r, ll ql, ll qr, ll val){
    if(ql > r || qr < l) return;
    if(ql <= l && r <= qr){
        st[id] += val;
        lazy[id] += val;
        return;
    }
    propagate(id, l, r);
    ll mid = (l+r)/2;
    update(id*2, l, mid, ql, qr, val);
    update(id*2+1, mid+1, r, ql, qr, val);
    st[id] = max(st[id*2], st[id*2+1]);
}

int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);

    ll n, q;
    cin >> n;
    for(ll i=1;i<=n;i++){
        cin >> l[i] >> r[i];
        comp.push_back(l[i]);
        comp.push_back(r[i]);
    }

    sort(comp.begin(), comp.end());
    comp.erase(unique(comp.begin(), comp.end()), comp.end());

    for(ll i=1;i<=n;i++){
        l[i] = lower_bound(comp.begin(), comp.end(), l[i]) - comp.begin() + 1;
        r[i] = lower_bound(comp.begin(), comp.end(), r[i]) - comp.begin() + 1;
    }

    ll j = 0;
    for(ll i=1;i<=n;i++){
        while(j < n && st[1] <= 1){
            j++;
            update(1, 1, 2*n, l[j], r[j], 1);
        }
        if(st[1] > 1) up[i][0] = j;
        else up[i][0] = j + 1;
        update(1, 1, 2*n, l[i], r[i], -1);
    }

    up[n+1][0] = n+1;
    for(ll k=1;k<maxk;k++){
        for(ll i=1;i<=n+1;i++){
            up[i][k] = up[up[i][k-1]][k-1];
        }
    }

    cin >> q;
    while(q--){
        ll a, b;
        cin >> a >> b;
        ll ans = 0;
        for(ll k=maxk-1;k>=0;k--){
            if(up[a][k] <= b){
                ans += (1ll << k);
                a = up[a][k];
            }
        }
        cout << ans+1 << endl;
    }

    return 0;
}

Compilation message (stderr)

Main.cpp: In function 'void propagate(ll, ll, ll)':
Main.cpp:15:9: error: 'update' was not declared in this scope
   15 |         update(id*2, l, mid, l, mid, lazy[id]);
      |         ^~~~~~