Submission #68805

#TimeUsernameProblemLanguageResultExecution timeMemory
68805FedericoSJakarta Skyscrapers (APIO15_skyscraper)C++14
10 / 100
5 ms1364 KiB
#pragma GCC optimize("Ofast") #include <iostream> #include <vector> #include <queue> using namespace std; typedef pair<pair<int,int>,int> pp; int N,M; int B[30005],P[30005]; vector<int> V[30005]; priority_queue<pp> Q; int main(){ cin>>N>>M; for(int i=0;i<M;i++){ cin>>B[i]>>P[i]; if(i) V[B[i]].push_back(i); } //indice distanza posizione // | // | // | // V //dist pos ind Q.push({{0,B[0]},0}); while(!Q.empty()){ pp p=Q.top(); Q.pop(); //cout<<Q.size()<<" "<<p.second<<" "<<p.first.first<<" "<<p.first.second<<endl; if(p.second==1){ cout<<p.first.first; return 0; } for(int x:V[p.first.second]) Q.push({{p.first.first,B[x]},x}); V[p.first.second].clear(); if(p.first.second==B[p.second]){ for(int k=1;;k++){ if(p.first.second-k*P[p.second]<0) break; if(!V[p.first.second-k*P[p.second]].empty()){ Q.push({{p.first.first+k,p.first.second-k*P[p.second]},p.second}); break; } } for(int k=1;;k++){ if(p.first.second+k*P[p.second]>=N) break; if(!V[p.first.second+k*P[p.second]].empty()){ Q.push({{p.first.first+k,p.first.second+k*P[p.second]},p.second}); break; } } } if(p.first.second<B[p.second]){ for(int k=1;;k++){ if(p.first.second-k*P[p.second]<0) break; if(!V[p.first.second-k*P[p.second]].empty()){ Q.push({{p.first.first+k,p.first.second-k*P[p.second]},p.second}); break; } } } if(p.first.second>B[p.second]){ for(int k=1;;k++){ if(p.first.second+k*P[p.second]>=N) break; if(!V[p.first.second+k*P[p.second]].empty()){ Q.push({{p.first.first+k,p.first.second+k*P[p.second]},p.second}); break; } } } } cout<<-1; }
#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...