Submission #595559

#TimeUsernameProblemLanguageResultExecution timeMemory
595559DeepessonEvent Hopping (BOI22_events)C++17
10 / 100
1590 ms18792 KiB
#include <bits/stdc++.h> #define MAX 200005 int N,Q; typedef std::pair<int,int> pii; std::vector<pii> eventos; std::vector<int> add[MAX]; std::vector<int> rem[MAX]; int catalogo_avanco[MAX]; bool moscando[MAX]; int visitado[MAX]; void explora(int x){ memset(&catalogo_avanco,0,sizeof(catalogo_avanco)); memset(&visitado,0,sizeof(visitado)); memset(&moscando,0,sizeof(moscando)); catalogo_avanco[eventos[x].second]=1; for(int i=0;i!=MAX;++i){ for(auto&x:add[i]){ moscando[x]=true; } int d = catalogo_avanco[i]; if(d){ for(int i=0;i!=N;++i){ auto& x = moscando[i]; if(!x)continue; if(d){ if(!visitado[i]) visitado[i]=d+1; else visitado[i]=std::min(visitado[i],d+1); } // std::cout<<"Visita "<<x.first<<" "<<d<<" "<<i<<"\n"; if(!catalogo_avanco[eventos[i].second])catalogo_avanco[eventos[i].second]=d+1; else catalogo_avanco[eventos[i].second]=std::min((int)catalogo_avanco[eventos[i].second],d+1); } } for(auto&x:rem[i]){ moscando[x]=false; } } } typedef std::pair<int,int*> pipo; int main() { std::ios::sync_with_stdio(false); std::cin.tie(0); std::cout.tie(0); std::cin>>N>>Q; for(int i=0;i!=N;++i){ int a,b; std::cin>>a>>b; eventos.push_back({a,b}); } { std::vector<pipo> comprime; for(auto&x:eventos){ comprime.push_back({x.first,&x.first}); comprime.push_back({x.second,&x.second}); } std::sort(comprime.begin(),comprime.end()); int last=-1,cord=1; for(auto&x:comprime){ if(x.first!=last){ last=x.first; ++cord; } *x.second=cord; } } for(int i=0;i!=N;++i){ add[eventos[i].first].push_back(i); rem[eventos[i].second].push_back(i); } for(int i=0;i!=Q;++i){ int s,e; std::cin>>s>>e;--s;--e; if(s==e){ std::cout<<"0\n"; continue; } explora(s); if(visitado[e]){ std::cout<<visitado[e]-1<<"\n"; }else std::cout<<"impossible\n"; } }
#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...