Submission #112913

#TimeUsernameProblemLanguageResultExecution timeMemory
112913nafis_shifatJakarta Skyscrapers (APIO15_skyscraper)C++14
10 / 100
17 ms1328 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[30009]; 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)1e9; 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; int w=-pq.top().first; pq.pop(); if(u==b[1]) { cout<<w<<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]>w+edg[u][i].second) { dist[edg[u][i].first]=w+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:76: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...