#include <iostream>
#include <vector>
#include <cstring>
#include <queue>
using namespace std;
vector<int> g[200005];
bool vis[200005]; int n;
void con(int u, int v) {
g[u].push_back(v);
}
void init(int tn, vector<int> a) {
n = tn;
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;
for (int i = 0; i < n; ++i) vis[i] = 1;
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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |