Submission #1137092

#TimeUsernameProblemLanguageResultExecution timeMemory
1137092alir3za_zar3Jakarta Skyscrapers (APIO15_skyscraper)C++20
100 / 100
181 ms5020 KiB
// Alir3za.Zar3 -> Shiraz , Iran #include <bits/stdc++.h> using namespace std; const int N = 3e4+7, Inf = 1e9+7; int n,m,b[N],p[N],l[N]; set<int> e[N]; void in () { cin >> n >> m; for (int i=1; i<=m; i++) { cin >> b[i] >> p[i]; e[b[i]].insert(p[i]); } fill_n(l,N,Inf); } void Dijkstra () { set<pair<int,int>> q; l[b[1]]=0; q.insert({0,b[1]}); while (!q.empty()) { int v = q.begin()->second; q.erase(q.begin()); for (auto o : e[v]) { for (int i=v+o; i<=n; i+=o) { e[i].erase(o); if (l[i]>l[v]+(i-v)/o) { q.erase({l[i],i}); l[i] = l[v]+(i-v)/o; q.insert({l[i],i}); } } for (int i=v-o; i>=0; i-=o) { e[i].erase(o); if (l[i]>l[v]+(v-i)/o) { q.erase({l[i],i}); l[i] = l[v]+(v-i)/o; q.insert({l[i],i}); } } } } } void out () { if (l[b[2]]==Inf) cout << -1 << '\n'; else cout << l[b[2]] << '\n'; } signed main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); in(); Dijkstra(); out(); }
#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...