Submission #243212

#TimeUsernameProblemLanguageResultExecution timeMemory
243212neihcr7jJakarta Skyscrapers (APIO15_skyscraper)C++14
57 / 100
1106 ms256888 KiB
#include<bits/stdc++.h> #define oo 1000000000 #define maxm 4000005 #define maxn 30005 #define block 120 using namespace std; typedef long long ll; int n, m; int b[maxn], p[maxn]; vector < pair < int, int > > g[maxm]; int node(int u, int x) {return x * n + u;} int dist[maxm], vis[maxm]; const int t = 251; vector < int > L[t + 1]; int sz[t + 1]; int dijkstra() { fill(dist, dist + maxm, oo); dist[b[0]] = 0; L[0].push_back(b[0]); int M = maxn - 1; for (int i = 0; i <= M; ++i) while (!L[i % t].empty()) { int u = L[i % t].back(); L[i % t].pop_back(); if (u == b[1]) return i; if (dist[u] < i || vis[u]) continue; vis[u] = 1; for (auto x : g[u]) { int v = x.first, w = x.second; if (dist[v] > dist[u] + w) { dist[v] = dist[u] + w; L[dist[v] % t].push_back(v); } } } return (dist[b[1]] == oo ? -1 : dist[b[1]]); } int main(){ #define TASK "ABC" //freopen(TASK".inp", "r", stdin); freopen(TASK".out", "w", stdout); ios_base::sync_with_stdio(0); cin >> n >> m; for (int i = 0; i < m; ++i) cin >> b[i] >> p[i]; for (int j = 1; j <= block; ++j) for (int i = j; i < n; ++i) g[node(i, j)].push_back({node(i - j, j), 1}); for (int j = 1; j <= block; ++j) for (int i = 0; i + j < n; ++i) g[node(i, j)].push_back({node(i + j, j), 1}); for (int i = 0; i < n; ++i) for (int j = 1; j <= block; ++j) g[node(i, j)].push_back({i, 0}); for (int i = 0; i < m; ++i) if (p[i] <= block) g[b[i]].push_back({node(b[i], p[i]), 0}); for (int i = 0; i < m; ++i) if (p[i] > block) for (int j = b[i] % p[i]; j < n; j += p[i]) if (b[i] != j) g[b[i]].push_back({j, abs(j - b[i]) / p[i]}); cout << dijkstra(); 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...