제출 #1138834

#제출 시각아이디문제언어결과실행 시간메모리
1138834am_aadvik밀림 점프 (APIO21_jumps)C++17
0 / 100
4019 ms12200 KiB
#include <iostream> #include <vector> #include <cstring> #include <queue> using namespace std; vector<int> g[200005]; bool vis[200005]; void con(int u, int v) { g[u].push_back(v); } void init(int n, vector<int> a) { for (int i = 0; i < n; ++i) { int s = 0, e = i - 1, res = -1; while (s <= e) { int mid = (s + e) / 2; if (a[mid] > a[i]) res = mid, s = mid + 1; else e = mid - 1; } if (res != -1) con(i, res); s = i + 1, e = n - 1, res = -1; while (s <= e) { int mid = (s + e) / 2; if (a[mid] > a[i]) res = mid, e = mid - 1; else s = mid + 1; } if (res != -1) con(i, res); } } int minimum_jumps(int a, int b, int c, int d) { queue<pair<int, int>> q; memset(vis, 0, sizeof(vis)); for (int i = a; i <= b; ++i) q.push({ i, 0 }), vis[i] = 1; while (!q.empty()) { auto f = q.front(); q.pop(); if ((f.first >= c) && (f.first <= d)) return f.second; for (auto x : g[f.first]) if (!vis[x]) q.push({ x, f.second + 1 }), vis[x] = 1; } return -1; }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...