제출 #1141335

#제출 시각아이디문제언어결과실행 시간메모리
1141335LuvidiCurtains (NOI23_curtains)C++20
100 / 100
578 ms68896 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define pll pair<ll, ll> #define pii pair<int, int> #define fs first #define sc second #define pb push_back const int maxn=5e5; int seg[4*maxn]; pii lzy[4*maxn]; pii mrg(pii p1,pii p2){ if(!p1.sc)return p2; if(p1.sc>=p2.fs)return {min(p1.fs,p2.fs),p2.sc}; return p1; } void prop(int v){ if(lzy[v].sc){ lzy[2*v+1]=mrg(lzy[2*v+1],lzy[v]); lzy[2*v+2]=mrg(lzy[2*v+2],lzy[v]); lzy[v]={0,0}; } } void upd(int v,int l,int r,int l2,int r2,pii p){ if(l>r2||r<l2)return; if(l2<=l&&r<=r2){ lzy[v]=mrg(lzy[v],p); return; } int m=(l+r)/2; prop(v); upd(2*v+1,l,m,l2,r2,p); upd(2*v+2,m+1,r,l2,r2,p); } void upd2(int v,int l,int r,int i,int x){ if(i<l||i>r)return; if(l==r){ seg[v]=x; lzy[v]={0,0}; return; } int m=(l+r)/2; prop(v); upd2(2*v+1,l,m,i,x); upd2(2*v+2,m+1,r,i,x); } int get(int v,int l,int r,int i){ if(l==r){ if(lzy[v].sc&&seg[v]>=lzy[v].fs)seg[v]=lzy[v].sc; return seg[v]; } int m=(l+r)/2; prop(v); if(i<=m)return get(2*v+1,l,m,i); return get(2*v+2,m+1,r,i); } void solve() { int n,m,q; cin>>n>>m>>q; vector<int> a[n+1]; while(m--){ int l,r; cin>>l>>r; a[r].pb(l); } int ans[q]; vector<pii> qry[n+1]; bool b=1; for(int i=0;i<q;i++){ int l,r; cin>>l>>r; b&=l==1; qry[r].pb({l,i}); } for(int i=0;i<=4*n;i++)seg[i]=-1; for(int i=1;i<=n;i++){ for(int l:a[i]){ upd2(0,1,n,l,i); upd(0,1,n,1,l,{l-1,i}); } for(auto[l,idx]:qry[i]){ ans[idx]=get(0,1,n,l)==i; } } for(int i=0;i<q;i++){ if(ans[i])cout<<"YES\n"; else cout<<"NO\n"; } } int main() { #ifdef FPO freopen("in","r",stdin); freopen("out","w",stdout); #endif ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); solve(); }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...