제출 #112940

#제출 시각아이디문제언어결과실행 시간메모리
112940nafis_shifatJakarta Skyscrapers (APIO15_skyscraper)C++14
36 / 100
1078 ms14840 KiB
#include<bits/stdc++.h> #define mx 30009 #define pii pair<int,int> using namespace std; int main() { int n,m; cin>>n>>m; int b[m+1],p[m+1]; int sp[n+1]={}; vector<pii> edg[mx]; map<pair<int,int>,int> mp; for(int i=0;i<m;i++) { cin>>b[i]; cin>>p[i]; sp[b[i]]=p[i]; } for(int i=0;i<m;i++) { int k=0; for(int j=b[i]+p[i];j<n;j+=p[i]) { k++; if(sp[j]!=0 ) edg[b[i]].push_back({j,k}); if(mp[{j,p[i]}])break; } k=0; for(int j=b[i]-p[i];j>=0;j-=p[i]) { k++; if(sp[j]!=0) edg[b[i]].push_back({j,k}); if(mp[{j,p[i]}])break; } mp[{b[i],p[i]}]=1; } int dist[mx+1]; for(int i=0;i<=mx;i++)dist[i]=(int)2e9; priority_queue<pii,vector<pii>,greater<pii>> 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(u==b[1]) { cout<<dist[u]<<endl; return 0; } 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}); } } } cout<<-1<<endl; }

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

skyscraper.cpp: In function 'int main()':
skyscraper.cpp:71: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...