제출 #112914

#제출 시각아이디문제언어결과실행 시간메모리
112914nafis_shifatJakarta Skyscrapers (APIO15_skyscraper)C++14
0 / 100
4 ms1280 KiB
#include<bits/stdc++.h> #define mx 30009 using namespace std; int main() { int n,m; cin>>n>>m; int b[m+1],p[m+1]; int sp[n+1]={}; for(int i=0;i<m;i++) { cin>>b[i]; cin>>p[i]; sp[b[i]]=p[i]; } vector<pair<int,int>> edg[mx]; queue<pair<int,int>> q; q.push({b[0],sp[b[0]]}); int v1[n+1]={}; while(!q.empty()) { int st=q.front().first; int po=q.front().second; q.pop(); if(v1[st])continue; v1[st]=1; int ind=0; for(int i=st+po;i<n;i+=po) { ind++; if(sp[i]!=0) { edg[st].push_back({i,ind}); q.push({i,sp[i]}); } } ind=0; for(int i=st-po;i>=0;i-=po) { ++ind; if(sp[i]!=0) { edg[st].push_back({i,ind}); q.push({i,sp[i]}); } } } int dist[mx+1]; for(int i=0;i<=mx;i++)dist[i]=(int)2e9; priority_queue<pair<int,int>> pq; pq.push({0,b[0]}); dist[b[0]]=0; int vis[mx+1]={}; while(!pq.empty()) { int u=pq.top().second; pq.pop(); if(vis[u])continue; vis[u]=1; for(int i=0;i<edg[u].size();i++) { if(dist[edg[u][i].first]>dist[u]+edg[u][i].second) { dist[edg[u][i].first]=dist[u]+edg[u][i].second; pq.push({-dist[edg[u][i].first],edg[u][i].first}); } } } if(dist[b[1]]>=(int)2e9) cout<<-1<<endl; cout<<dist[b[1]]<<endl; }

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

skyscraper.cpp: In function 'int main()':
skyscraper.cpp:72:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for(int i=0;i<edg[u].size();i++)
                     ~^~~~~~~~~~~~~~
#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...