Submission #112944

#TimeUsernameProblemLanguageResultExecution timeMemory
112944nafis_shifatJakarta Skyscrapers (APIO15_skyscraper)C++14
100 / 100
54 ms12544 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]; set<int> mp[30009]; for(int i=0;i<m;i++) { scanf("%d%d",&b[i],&p[i]); sp[b[i]]=p[i]; } for(int i=0;i<m;i++) { int k=0; if(mp[b[i]].count(p[i]))continue; 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].count(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].count(p[i]))break; } mp[b[i]].insert(p[i]); } 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; }

Compilation message (stderr)

skyscraper.cpp: In function 'int main()':
skyscraper.cpp:73:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for(int i=0;i<edg[u].size();i++)
                     ~^~~~~~~~~~~~~~
skyscraper.cpp:16:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d%d",&b[i],&p[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...