Submission #1275893

#TimeUsernameProblemLanguageResultExecution timeMemory
1275893PooyaDaftarianJakarta Skyscrapers (APIO15_skyscraper)C++20
57 / 100
1096 ms3228 KiB
#include <bits/stdc++.h> #pragma GCC optimize("Ofast,unroll-loops,fast-math,omit-frame-pointer,no-stack-protector") #pragma GCC target("avx,avx2,fma,sse4.2,popcnt") using namespace std; typedef long long ll; typedef pair<int, int> pii; typedef long double ld; #define all(x) x.begin(), x.end() #define fast_io ios_base::sync_with_stdio(0); cin.tie(0) #define endl '\n' #define pb push_back #define out(x) {cout << x << '\n'; return;} #define ff first #define ss second #define sz(x) (int)(x).size() const int maxn = 3e4+7, inf = 2e9; vector<int> dg[maxn]; int b[maxn], p[maxn], dist[maxn]; int main(){ fast_io; int n, m; cin >> n >> m; for (int i = 0 ; i < m ; i++) cin >> b[i] >> p[i], dg[b[i]].pb(p[i]); for (int i = 0 ; i < n ; i++) sort(all(dg[i])), dg[i].erase(unique(all(dg[i])), dg[i].end()); for (int i = 0 ; i < n ; i++) dist[i] = inf; priority_queue<pii, vector<pii>, greater<pii>> q; dist[b[0]] = 0, q.push({0, b[0]}); while (!q.empty()){ auto [d, v] = q.top(); q.pop(); if (d != dist[v]) continue; for (auto pp : dg[v]){ for (int u = v ; u < n ; u += pp) if (dist[v] + (u-v)/pp < dist[u]) dist[u] = dist[v] + (u-v)/pp, q.push({dist[u], u}); for (int u = v ; u >= 0 ; u -= pp) if (dist[v] + (v-u)/pp < dist[u]) dist[u] = dist[v] + (v-u)/pp, q.push({dist[u], u}); } } cout << (dist[b[1]] == inf ? -1 : dist[b[1]]) << endl; return 0; }
#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...