Submission #1322558

#TimeUsernameProblemLanguageResultExecution timeMemory
1322558simona1230Event Hopping (BOI22_events)C++20
0 / 100
318 ms109152 KiB
#include<bits/stdc++.h> using namespace std; struct help { int l,r,i; help(){} help(int _l,int _r,int _i) { l=_l; r=_r; i=_i; } }; int n,q; help a[100001],b[100001]; vector<help> e[100001]; void read() { cin>>n>>q; for(int i=1;i<=n;i++) { cin>>a[i].l>>a[i].r; a[i].i=i; } for(int i=1;i<=q;i++) { cin>>b[i].l>>b[i].r; b[i].i=i; e[b[i].r].push_back(b[i]); } } bool cmpr(help h1,help h2) { if(h1.r==h2.r)return h1.l<h2.l; return h1.r<h2.r; } vector<help> v[200001]; int nxt[200001]; int ans[200001]; int p[200001]; int id[200001]; int g[200001][256]; bool cmpnorm(help h1,help h2) { return h1.i<h2.i; } void solve() { sort(a+1,a+n+1,cmpr); p[n+1]=1e9; for(int i=n;i>=1;i--) { p[i]=min(p[i+1],a[i].l); if(p[i]==a[i].l)id[i]=i; else id[i]=id[i+1]; //cout<<p[i]<<" "; int l=i,r=n; while(l<=r) { int m=(l+r)/2; if(p[m]<=a[i].r) { g[a[i].i][0]=a[id[m]].i; l=m+1; } else r=m-1; } } //cout<<endl; /*for(int i=1;i<=n;i++) { cout<<i<<" -> "<<g[i][0]<<endl; }*/ for(int lg=1;lg<=20;lg++) { for(int i=1;i<=n;i++) { g[i][lg]=g[g[i][lg-1]][lg-1]; } } sort(a+1,a+n+1,cmpnorm); for(int i=1;i<=q;i++) { int x=b[i].l,y=b[i].r; if(x==y) { cout<<0<<endl; continue; } int cnt=0; for(int j=20;j>=0;j--) { if(g[x][j]&&a[g[x][j]].r<a[y].r) { //cout<<j<<" "<<g[x][j]<<endl; x=g[x][j]; cnt+=(1<<j); } } //cout<<x<<" + "<<y<<endl; if(a[g[x][0]].r==a[y].r)cout<<cnt+1<<endl; else cout<<"impossible"<<endl; } } int main() { read(); solve(); return 0; } /* 6 5 8 9 5 8 9 12 1 3 2 3 10 13 1 3 2 5 1 6 4 5 3 4 4 3 1 5 2 7 3 9 8 10 1 2 1 3 1 4 6 1 5 8 10 12 14 16 3 6 1 4 11 15 4 4 1 4 2 8 5 6 7 10 1 2 2 3 3 2 1 4 */
#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...