#include<bits/stdc++.h>
using namespace std;
#define ff first
#define ss second
#define pb push_back
vector<int>v[400000];
vector<int>dst(3e5);
void init(int N, std::vector<int> H){
    
	for(int i=0;i<3e5;i++)dst[i]=1e6;
	vector<pair<int,int>>vc;
    for(int i=0;i<N;i++){
        while(!vc.empty()){
            if(vc.back().ff<H[i])vc.pop_back();
            else{
            	v[i].pb(vc.back().ss);
            	break;
            }
        }
        vc.pb({H[i],i});
    }
    vc.clear();
    for(int i=N-1;i>=0;i--){
        while(!vc.empty()){
            if(vc.back().ff<H[i])vc.pop_back();
            else{
            	v[i].pb(vc.back().ss);
            	break;
            }
        }
        vc.pb({H[i],i});
    }
}
int minimum_jumps(int A, int B, int C, int D) {
	queue<int>q;
	for(int i=A;i<=B;i++){
		dst[i]=0;
		q.push(i);
	}
	while(!q.empty()){
		int a=q.front();
		q.pop();
		for(auto b:v[a]){
			if(dst[b]>dst[a]+1){
				dst[b]=dst[a]+1;
				q.push(b);
			}
		}
	}
	int ans=1e6;
	for(int i=C;i<=D;i++){
		ans=min(ans,dst[i]);
	}
	if(ans==1e6)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... |