Submission #695142

#TimeUsernameProblemLanguageResultExecution timeMemory
695142AbitoJakarta Skyscrapers (APIO15_skyscraper)C++17
57 / 100
1094 ms71192 KiB
#include <bits/stdc++.h> using namespace std; #define pb push_back #define F first #define S second #define int long long const int N=3e4+5; int a[N],b[N],n,m,dis[N]; vector<pair<int,int>> adj[N]; vector<int> d[N],p[N]; bool vis[N]; priority_queue<pair<int,int>> pq; void getdiv(int x){ for (int i=1;i*i<=x;i++){ if (x%i) continue; int y=i,z=x/i; d[x].pb(y); if (y!=z) d[x].pb(z); }sort(d[x].begin(),d[x].end()); return; } void dijkstra(){ pq.push({0,a[0]}); while (!pq.empty()){ pair<int,int> x=pq.top(); x.F*=-1;pq.pop(); if (vis[x.S]) continue; vis[x.S]=true; for (auto u:adj[x.S]){ if (dis[u.F]<=x.F+u.S) continue; dis[u.F]=x.F+u.S; pq.push({-dis[u.F],u.F}); } }return; } int32_t main(){ for (int i=0;i<N;i++){ getdiv(i); dis[i]=INT_MAX; }cin>>n>>m; for (int i=0;i<m;i++){ cin>>a[i]>>b[i]; p[a[i]].pb(b[i]); }dis[a[0]]=0; for (int i=0;i<n;i++) sort(p[i].begin(),p[i].end()); for (int i=0;i<n;i++){ for (int j=0;j<n;j++){ if (i==j) continue; int dist=abs(i-j),x=0,y=0,ans=INT_MAX; while (x<d[dist].size() && y<p[i].size()){ if (d[dist][x]==p[i][y]){ ans=dist/d[dist][x]; x++; y++; continue; } if (d[dist][x]<p[i][y]) x++; else y++; } if (ans==INT_MAX) continue; adj[i].pb({j,ans}); } }dijkstra(); if (dis[a[1]]==INT_MAX) cout<<-1<<endl; else cout<<dis[a[1]]<<endl; return 0; }

Compilation message (stderr)

skyscraper.cpp: In function 'int32_t main()':
skyscraper.cpp:50:21: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   50 |             while (x<d[dist].size() && y<p[i].size()){
      |                    ~^~~~~~~~~~~~~~~
skyscraper.cpp:50:41: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   50 |             while (x<d[dist].size() && y<p[i].size()){
      |                                        ~^~~~~~~~~~~~
#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...