#include "bits/stdc++.h"
#include "jumps.h"
// #include "stub.cpp"
using namespace std;
#define SZ(s) (int)s.size()
const int N = 2e5 + 5;
int n;
vector <int> h, v[N];
void init(int N1, vector<int> H) {
n = N1, h = H;
vector <int> v1;
for(int i = 0; i < n; i++) {
while(SZ(v1) and h[v1.back()] < h[i]) {
v1.pop_back();
}
if(SZ(v1)) v[i].push_back(v1.back());
v1.push_back(i);
}
v1.clear();
for(int i = n-1; i >= 0; i--) {
while(SZ(v1) and h[v1.back()] < h[i]) {
v1.pop_back();
}
if(SZ(v1)) v[i].push_back(v1.back());
v1.push_back(i);
}
return;
}
int minimum_jumps(int a, int b, int c, int d) {
queue <pair <int, int>> q;
vector <int> vis(n+1, 0);
for(int i = a; i <= b; i++) {
q.push({i, 0});
vis[i] = true;
}
int ans = 1e9;
while(!q.empty()) {
auto [x, s] = q.front();
q.pop();
if(c <= x and x <= d) ans = min(ans, s);
for(auto i : v[x]) {
if(vis[i]) continue;
q.push({i, s + 1});
vis[i] = true;
}
}
return (ans == 1e9 ? -1 : ans);
}
# | 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... |