제출 #1322506

#제출 시각아이디문제언어결과실행 시간메모리
1322506simona1230Event Hopping (BOI22_events)C++20
10 / 100
1595 ms80220 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]; void solve() { sort(a+1,a+n+1,cmpr); for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { if(i==j)continue; if(a[i].r==a[j].r&&i>j||a[i].l<=a[j].r&&a[j].r<a[i].r) v[i].push_back(a[j]); } } for(int i=1;i<=n;i++) { //cout<<a[i].l<<" ! "<<a[i].r<<" "<<a[i].i<<endl; for(int j=0;j<v[i].size();j++) { help h=v[i][j]; //cout<<h.l<<" "<<h.r<<" "<<h.i<<endl; nxt[h.i]=a[i].i; } /*for(int j=1;j<=n;j++) cout<<nxt[j]<<" "; cout<<endl;*/ int id=a[i].i; for(int j=0;j<e[id].size();j++) { help h=e[id][j]; int ver=h.l; int cnt=0; while(ver) { //cout<<"- "<<ver<<endl; cnt++; if(ver==h.r) ans[h.i]=cnt; ver=nxt[ver]; } } } for(int i=1;i<=q;i++) { if(b[i].l==b[i].r)cout<<0<<endl; else if(ans[i]==0)cout<<"impossible"<<'\n'; else cout<<ans[i]-1<<'\n'; } } 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 */
#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...