4
use std::collections::hash_map::*;5
use std::collections::*;11
fn dfs(pos: usize, arr: &Vec<i32>, d: usize, count: &mut Vec<i32>) -> i32 {12
// check if we can jump13
let mut can_jump_left = true;14
let mut can_jump_right = true;15
if pos == 0 || arr[pos - 1] >= arr[pos] {16
can_jump_left = false;18
if pos == arr.len() - 1 || arr[pos + 1] >= arr[pos] {19
can_jump_right = false;25
for i in 1..min(pos, d) + 1 {27
if arr[i] >= arr[pos] {32
let m = dfs(i, arr, d, count);33
ret = max(ret, m + 1);35
ret = max(ret, count[i] + 1);41
for i in 1..min(arr.len() - pos - 1, d) + 1 {43
if arr[i] >= arr[pos] {48
let m = dfs(i, arr, d, count);49
ret = max(ret, m + 1);51
ret = max(ret, count[i] + 1);61
pub fn max_jumps(arr: Vec<i32>, d: i32) -> i32 {63
let mut count = vec![-1; arr.len()];65
for i in 0..arr.len() {67
ans = max(ans, dfs(i, &arr, d as usize, &mut count));