Submission #102410

#TimeUsernameProblemLanguageResultExecution timeMemory
102410DarksinianJakarta Skyscrapers (APIO15_skyscraper)C++14
100 / 100
496 ms82720 KiB
#include <bits/stdc++.h> #define f first #define s second #define ll long long using namespace std; const int N = 100002; int vv[N]; set<pair<int,int> > vis; ll d[N]; pair<int,int> p[N]; vector<pair<int,int> > g[N]; map<int,int> po[N]; int main() { int n,m; cin >> n >> m; for(int i =0;i<m;i++) { int a,b; cin >> a >> b; p[i] = {a,b}; po[a][b] = i; } for(int i =0;i<m;i++) { int pre=-1; int x = p[i].f,pr = p[i].s; if(vis.count({x,pr})) continue; for(int j = x%pr;j<n;j+=pr) { int w = abs((j-x)/pr); if(po[j].count(pr)) { if(pre == -1) { pre = j; continue; } w = abs((pre-j)/pr); g[pre].push_back({j,w}); g[j].push_back({pre,w}); pre = j; vis.insert({j,pr}); } else g[x].push_back({j,w}); } vis.insert({x,pr}); } for(int i =0;i<n;i++) d[i] = 1e18; for(int i=0;i<n;i++) { for(auto u : g[i]) { // cout << i << " " << u.first << " " << u.second << endl; } } set<pair<ll,ll> > x; x.insert({0,p[0].f}); d[p[0].f] = 0; while(!x.empty()) { int v = x.begin()->second; ll w = x.begin()->first; x.erase({w,v}); for(auto u : g[v]) { if(d[u.first] > w + u.second) { if(d[u.first] != 1e18) x.erase({d[u.first],u.first}); d[u.first] = w + u.second; x.insert({d[u.first],u.first}); } } } if(d[p[1].f] == 1e18) cout << -1; else cout << d[p[1].f]; return 0; }

Compilation message (stderr)

skyscraper.cpp: In function 'int main()':
skyscraper.cpp:46:18: warning: variable 'u' set but not used [-Wunused-but-set-variable]
         for(auto u : g[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...