Submission #1132071

#TimeUsernameProblemLanguageResultExecution timeMemory
1132071vladiliusJakarta Skyscrapers (APIO15_skyscraper)C++20
57 / 100
146 ms327680 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; using pii = pair<int, int>; #define pb push_back #define ff first #define ss second const int inf = 1e9; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n, m; cin>>n>>m; vector<int> x(m + 1), y(m + 1); for (int i = 1; i <= m; i++){ cin>>x[i]>>y[i]; x[i]++; } vector<vector<int>> ww(n + 1, vector<int>(n + 1, inf)); for (int i = 1; i <= m; i++){ int f = x[i] + y[i], cc = 1; while (f <= n){ ww[x[i]][f] = min(ww[x[i]][f], cc); f += y[i]; cc++; } f = x[i] - y[i]; cc = 1; while (f > 0){ ww[x[i]][f] = min(ww[x[i]][f], cc); f -= y[i]; cc++; } } vector<pii> g[n + 1]; for (int i = 1; i <= n; i++){ for (int j = 1; j <= n; j++){ if (ww[i][j] != inf){ g[i].pb({j, ww[i][j]}); } } } priority_queue<pii, vector<pii>, greater<pii>> pq; pq.push({0, x[1]}); vector<int> out(n + 1, inf); out[x[1]] = 0; while (!pq.empty()){ auto [d, v] = pq.top(); pq.pop(); for (auto [u, w]: g[v]){ int s = d + w; if (s < out[u]){ out[u] = s; pq.push({out[u], u}); } } } cout<<((out[x[2]] == inf) ? -1 : out[x[2]])<<"\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...