Submission #574200

#TimeUsernameProblemLanguageResultExecution timeMemory
574200kshitij_sodaniEvent Hopping (BOI22_events)C++14
0 / 100
153 ms17024 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){ if(j.b.a==0){ cur.insert({bb[j.b.b],j.b.b}); } else{ par[j.b.b][0]=-1; if(cur.size()){ auto jj=cur.end(); jj--; cur.erase({bb[j.b.b],j.b.b}); 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(par[cur][0]==-1){ su=-1; break; } cur=par[cur][0]; su++; if(cur==r){ break; } if(bb[cur]>bb[r]){ 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...