Submission #1152564

#TimeUsernameProblemLanguageResultExecution timeMemory
1152564AlgorithmWarriorJakarta Skyscrapers (APIO15_skyscraper)C++20
36 / 100
1095 ms632 KiB
#include <bits/stdc++.h> using namespace std; int const INF=1e9; int const MAX=30005; int pos[MAX]; int pas[MAX]; int n,m; void read(){ cin>>n>>m; int i; for(i=0;i<m;++i) cin>>pos[i]>>pas[i]; } int drum[MAX]; bool ales[MAX]; int dist(int p1,int p2,int pas){ if(p1>p2) swap(p1,p2); int dif=p2-p1; if(dif%pas==0) return dif/pas; return INF; } void dijkstra(){ int i,j; for(i=1;i<=m;++i) drum[i]=INF; for(j=1;j<m;++j){ int doge=m; for(i=0;i<m;++i) if(!ales[i] && drum[i]<drum[doge]) doge=i; if(doge<m){ ales[doge]=1; for(i=0;i<m;++i) if(drum[i]>drum[doge]+dist(pos[doge],pos[i],pas[doge])) drum[i]=drum[doge]+dist(pos[doge],pos[i],pas[doge]); } } } void write(){ if(drum[1]>10*m) drum[1]=INF; if(drum[1]==INF) cout<<-1; else cout<<drum[1]; } int main() { read(); dijkstra(); write(); 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...