#include "jumps.h"
#include <bits/stdc++.h>
using namespace std;
int N;
vector<int> H;
vector<vector<int>> out;
void init(int N2, std::vector<int> H2){
N=N2;
H=H2;
stack<int> s;
out.resize(N);
for (int i=0;i<N;i++){
while (s.size() && H[s.top()] < H[i]){
out[s.top()].push_back(i);
s.pop();
}
s.push(i);
}
while (s.size()) s.pop();
for (int i=N-1;i>=0;i--){
while (s.size() && H[s.top()] < H[i]){
out[s.top()].push_back(i);
s.pop();
}
s.push(i);
}
}
int minimum_jumps(int A, int B, int C, int D) {
vector<int> dist(N,1e9);
queue<int> q;
for (int i=A;i<=B;i++){
q.push(i);
dist[i] = 0;
}
while (q.size()){
int v = q.front();
q.pop();
for (int u : out[v]){
if (dist[u] == 1e9){
dist[u] = dist[v] + 1;
q.push(u);
}
}
}
int ans = 1e9;
for (int i=C;i<=D;i++){
ans = min(ans, dist[i]);
}
if (ans == 1e9) ans =-1;
return 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... |