You are given a **0-indexed** integer array `nums` and an integer `k`. You are initially standing at index `0`. In one move, you can jump at most `k` steps forward without going outside the boundaries of the array. That is, you can jump from index `i` to any index in the range `[i + 1, min(n - 1, i + k)]` **inclusive**. You want to reach the last index of the array (index `n - 1`). Your **score** is the **sum** of all `nums[j]` for each index `j` you visited in the array. Return the **maximum score** you can get.
Example 1
Input: nums = [1,-1,-2,4,-7,3], k = 2
Output: 7
Explanation: Visit indices 0,1,3,5 → 1 + (-1) + 4 + 3 = 7 (jumps of size <= 2).
Example 2
Input: nums = [10,-5,-2,4,0,3], k = 3
Output: 17
Explanation: Best route collects 10 + 4 + 3 = 17 using jumps of at most 3.
Example 3
Input: nums = [1,-5,-20,4,-1,3,-6,-3], k = 2
Output: 0
Explanation: The best route is 0 → 1 → 3 → 5 → 7, collecting 1 + (-5) + 4 + 3 + (-3) = 0. Skipping -5 would mean landing on -20, and the last index (-3) must always be counted.
dp[i] = best score to reach i = nums[i] + max(dp[i-k..i-1]). The inner max over a sliding window of size k is the classic monotonic-deque trick: keep indices whose dp is decreasing, drop ones that fell out of the window, and the front is always the window maximum.
Run checks all cases above. Submit evaluates all test cases.