Submission #1199047

#TimeUsernameProblemLanguageResultExecution timeMemory
1199047brover29Osumnjičeni (COCI21_osumnjiceni)C++17
0 / 110
1098 ms60388 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],nt[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; z[v]=-1; }void push(ll v,ll l,ll r){ if(z[v]==-1)return; ll mid=(r+l)>>1; st[v*2]=z[v]; st[v*2+1]=z[v]; z[v*2]=z[v]; z[v*2+1]=z[v]; z[v]=-1; } 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]=1; z[v]=1; 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]=max(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 max(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; build(1,1,2*n); for(ll i=1;i<=n;i++){ st[1]=0; z[1]=0; 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...