제출 #281786

#제출 시각아이디문제언어결과실행 시간메모리
281786srvltJakarta Skyscrapers (APIO15_skyscraper)C++14
100 / 100
712 ms144892 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define ld long double #define pb push_back #define all(x) begin(x), end(x) #define SZ(x) (int)(x).size() #define cps(x) sort(all(x)), (x).erase(unique(all(x)), end(x)) mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); const int n0 = 30003, inf = 1e9; int n, m, num, ind[n0]; vector <int> rem[n0], vec[n0], b, d, out[n0]; vector <int> g1, g2, g3; deque <int> q; void relax0(int v, int u) { if (d[u] > d[v]) { d[u] = d[v]; q.push_front(u); } } void relax1(int v, int u) { if (d[u] > d[v] + 1) { d[u] = d[v] + 1; q.pb(u); } } void bfs(int x) { q.pb(x); for (int i = 0; i < num; i++) d[i] = inf; d[x] = 0; while (!q.empty()) { int v = q.front(); q.pop_front(); if (v < n) { for (int i : out[v]) relax0(v, i); } else { if (g1[v]) relax1(v, v - 1); if (g2[v]) relax1(v, v + 1); relax0(v, g3[v]); } } } int main() { ios_base::sync_with_stdio(false), cin.tie(NULL); cin >> n >> m; int s, f; for (int i = 0; i < m; i++) { int B, P; cin >> B >> P; if (i == 0) s = B; if (i == 1) f = B; vec[P].pb(B); rem[P].pb(B % P); } num = n; for (int i = 1; i < n0; i++) { cps(rem[i]); for (int j : rem[i]) num += ((n - 1) - j) / i + 1; } assert(num < 7500000); b.resize(num), d.resize(num); g1.resize(num), g2.resize(num), g3.resize(num); int cur = n; for (int i = 1; i < n0; i++) { for (int j : rem[i]) { for (int k = j; k < n; k += i) { g1[cur] = (k != j); g2[cur] = (k + i < n); g3[cur] = k; ind[k] = cur++; } } for (int j : vec[i]) out[j].pb(ind[j]); } bfs(s); if (d[f] == inf) cout << -1; else cout << d[f]; }

컴파일 시 표준 에러 (stderr) 메시지

skyscraper.cpp: In function 'int main()':
skyscraper.cpp:84:9: warning: 'f' may be used uninitialized in this function [-Wmaybe-uninitialized]
   84 |  if (d[f] == inf) cout << -1;
      |         ^
skyscraper.cpp:83:5: warning: 's' may be used uninitialized in this function [-Wmaybe-uninitialized]
   83 |  bfs(s);
      |  ~~~^~~
#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...