Submission #678058

#TimeUsernameProblemLanguageResultExecution timeMemory
678058Cross_RatioJakarta Skyscrapers (APIO15_skyscraper)C++14
36 / 100
260 ms33148 KiB
#include <bits/stdc++.h> using namespace std; const int INF = 1e9; int B[30005]; int P[30005]; int dis[2005][2005]; int dis2[2005]; bool vis[2005]; signed main() { cin.sync_with_stdio(false); cin.tie(0); cout.tie(0); int N, M; cin >> N >> M; int i, j; for(i=0;i<M;i++) cin >> B[i] >> P[i]; for(i=0;i<M;i++) { for(j=0;j<M;j++) { int d = abs(B[i] - B[j]); if(d % P[i] != 0) dis[i][j] = INF; else { dis[i][j] = d / P[i]; } } } for(i=0;i<M;i++) dis2[i] = INF; dis2[0] = 0; while(true) { int mi = INF, pt = -1; for(i=0;i<M;i++) { if(!vis[i] && dis2[i] < mi) { mi = dis2[i]; pt = i; } } if(pt==-1) break; for(i=0;i<M;i++) { dis2[i] = min(dis2[i], dis2[pt] + dis[pt][i]); } vis[pt] = true; } cout << (dis2[1]==INF?-1:dis2[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...