Submission #399644

#TimeUsernameProblemLanguageResultExecution timeMemory
399644MeGustaElArroz23Jakarta Skyscrapers (APIO15_skyscraper)C++14
100 / 100
56 ms11216 KiB
#include<bits/stdc++.h> using namespace std; typedef long long ll; typedef vector<int> vi; typedef pair<int,int> pii; typedef vector<pii> vii; typedef vector<vii> vvii; int main(){ int l,n; cin >> l >> n; vii v(n); for (int i=0;i<n;i++) cin >> v[i].first >> v[i].second; int inicio=v[0].first,final=v[1].first; vector<set<int>> pos(l); for (int i=0;i<n;i++) pos[v[i].first].insert(v[i].second); vvii conexiones(l); for (int i=0;i<l;i++){ for (int p:pos[i]){ int a=i-p; while (a>=0){ if (pos[a].size()) conexiones[i].push_back(pii{(i-a)/p,a}); if (pos[a].count(p)) break; a-=p; } a=i+p; while (a<l){ if (pos[a].size()) conexiones[i].push_back(pii{(a-i)/p,a}); if (pos[a].count(p)) break; a+=p; } } } priority_queue<pii> cola; cola.push(pii{0,inicio}); bool T=true; vi porvisitar(l,true); //for (int i=0;i<n;i++){ // for (pii x:conexiones[i]) cerr << x.second<<' '<<x.first<<' '<<' '; // cerr<<'\n'; //} while (cola.size()){ pii x=cola.top(); cola.pop(); if (porvisitar[x.second]){ porvisitar[x.second]=false; if (x.second==final){ T=false; cout << -x.first << '\n'; break; } for (pii y:conexiones[x.second]){ if (porvisitar[y.second]) cola.push(pii{x.first-y.first,y.second}); } } } if (T) cout << -1<<'\n'; }
#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...