제출 #1199036

#제출 시각아이디문제언어결과실행 시간메모리
1199036brover29Osumnjičeni (COCI21_osumnjiceni)C++17
0 / 110
1098 ms59888 KiB
#include <bits/stdc++.h>
//qwerty47924692
using namespace std;
using ll = long long;
const ll N=2e5+29;
const string br="617283";
#define sz(a)(ll)a.size()
#define f first
#define s second
ll n,l[N],r[N],dp[5005][5005],st[4*N],z[4*N];
map<ll,ll>mp;
set<ll>s;
void build(ll v,ll l,ll r){
    if(l==r){
        st[v]=0;
        return;
    }
    ll mid=(r+l)>>1;
    build(v*2,l,mid);
    build(v*2+1,mid+1,r);
    st[v]=0;
}void push(ll v,ll l,ll r){
    ll mid=(r+l)>>1;
    st[v*2]+=z[v]*(mid-l+1);
    st[v*2+1]+=z[v]*(r-mid);
    z[v*2]+=z[v];
    z[v*2+1]+=z[v];
    z[v]=0;
}
void update(ll v,ll l,ll r,ll x,ll y){
    if(l>y||x>r)return;
    if(x<=l&&r<=y){
        st[v]+=(r-l+1);
        z[v]++;
        return;
    }ll mid=(r+l)>>1;
    push(v,l,r);
    update(v*2,l,mid,x,y);
    update(v*2+1,mid+1,r,x,y);
    st[v]=st[v*2]+st[v*2+1];
}ll get(ll v,ll l,ll r,ll x,ll y){
    if(l>y||x>r)return 0;
    if(x<=l&&r<=y)return st[v];
    ll mid=(r+l)>>1;
    push(v,l,r);
    return get(v*2,l,mid,x,y)+get(v*2+1,mid+1,r,x,y);
}
int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);

    cin>>n;
    for(ll i=1;i<=n;i++){
        cin>>l[i]>>r[i];
        s.insert(l[i]);
        s.insert(r[i]);
    }ll timer=0;
    for(ll i:s){
        mp[i]=++timer;
    }for(ll i=1;i<=n;i++){
        l[i]=mp[l[i]];
        r[i]=mp[r[i]];
    }ll q;
    for(ll i=1;i<=n;i++){
        build(1,1,2*n);
        ll cnt=1;
        for(ll j=i;j<=n;j++){
            if(get(1,1,2*n,l[j],r[j])>=1){
                cnt++;
                build(1,1,2*n);
            }update(1,1,2*n,l[j],r[j]);
            dp[i][j]=cnt;
        }
    }
    cin>>q;
    while(q--){
        ll l,r;
        cin>>l>>r;
        cout<<dp[l][r]<<'\n';
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...