제출 #155397

#제출 시각아이디문제언어결과실행 시간메모리
155397dantoh000Jakarta Skyscrapers (APIO15_skyscraper)C++14
100 / 100
217 ms26360 KiB
#include <bits/stdc++.h> using namespace std; typedef pair<int,int> ii; int dist[30005]; vector<int> a[30005]; int h[30005][205]; int n,m; int k = 200; int s; int e; int main(){ scanf("%d%d",&n,&m); for (int i = 0; i < m; i++){ int b,p; scanf("%d%d",&b,&p); if (i == 0) s = b; if (i == 1) e = b; if (p > k || !h[b][p]){ a[b].push_back(p); } if (p <= k) h[b][p] = 1; } priority_queue<ii,vector<ii>,greater<ii> > pq; memset(dist,-1,sizeof(dist)); dist[s] = 0; pq.push(ii(0,s)); while (pq.size()){ ii cur = pq.top(); pq.pop(); int d = cur.first, u = cur.second; if (u == e) break; if (dist[u] > d) continue; for (auto x : a[u]){ for (int v = u-x; v >= 0; v-=x){ if (dist[v] == -1 || dist[v] > dist[u]+(u-v)/x){ dist[v] = dist[u]+(u-v)/x; pq.push(ii(dist[v],v)); } if (h[v][x]) break; } for (int v = u+x; v < n; v+=x){ if (dist[v] == -1 || dist[v] > dist[u]+(v-u)/x){ dist[v] = dist[u]+(v-u)/x; pq.push(ii(dist[v],v)); } if (h[v][x]) break; } } } printf("%d",dist[e]); return 0; }

컴파일 시 표준 에러 (stderr) 메시지

skyscraper.cpp: In function 'int main()':
skyscraper.cpp:12:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d%d",&n,&m);
     ~~~~~^~~~~~~~~~~~~~
skyscraper.cpp:15:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d%d",&b,&p);
         ~~~~~^~~~~~~~~~~~~~
#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...