Submission #574204

#TimeUsernameProblemLanguageResultExecution timeMemory
574204kshitij_sodaniEvent Hopping (BOI22_events)C++14
0 / 100
90 ms11916 KiB
#include <bits/stdc++.h> using namespace std; typedef long long llo; #define a first #define b second #define pb push_back #define endl '\n' int aa[100001]; int bb[100001]; int par[100001][20]; int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); int n,q; cin>>n>>q; vector<pair<int,pair<int,int>>> ss; for(int i=0;i<n;i++){ cin>>aa[i]>>bb[i]; ss.pb({aa[i],{0,i}}); ss.pb({bb[i],{1,i}}); } sort(ss.begin(),ss.end()); set<pair<int,int>> cur; for(auto j:ss){ while(cur.size()){ if((*cur.begin()).a<j.a){ cur.erase(cur.begin()); } else{ break; } } if(j.b.a==0){ cur.insert({bb[j.b.b],j.b.b}); } else{ par[j.b.b][0]=-1; cur.erase({bb[j.b.b],j.b.b}); if(cur.size()){ assert(cur.size()==1); auto jj=cur.end(); jj--; if((*jj).a>j.a){ int no=(*jj).b; if(no==j.b.b){ continue; } par[j.b.b][0]=no; } } cur.insert({bb[j.b.b],j.b.b}); } } /* for(int i=0;i<n;i++){ cout<<par[i][0]<<","; } cout<<endl;*/ for(int j=1;j<20;j++){ for(int i=0;i<n;i++){ if(par[i][j-1]==-1){ par[i][j]=-1; } else{ par[i][j]=par[par[i][j-1]][j-1]; } } } for(int ii=0;ii<q;ii++){ int l,r; cin>>l>>r; l--; r--; if(l==r){ cout<<0<<endl; continue; } if(bb[r]<bb[l]){ cout<<"impossible"<<endl; continue; } int su=0; int cur=l; for(int j=19;j>=0;j--){ if(par[cur][j]>=0){ if(bb[par[cur][j]]<bb[r]){ su+=(1<<j); cur=par[cur][j]; } } } while(true){ if(aa[r]<=bb[cur] and bb[r]>=bb[cur]){ break; } if(par[cur][0]==-1){ su=-1; break; } cur=par[cur][0]; su++; if(cur==r){ break; } if(aa[r]<=bb[cur] and bb[r]>=bb[cur]){ su++; break; } su=-1; break; } if(su==-1){ cout<<"impossible"<<endl; continue; } cout<<su<<endl; } return 0; }
#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...