Given an integer array **nums** and an integer **K**, The task is to find the maximum sum of a non-empty subsequence of the array such that for every two consecutive integers in the subsequence, nums[i] and nums[j], where** i < j**, the condition **j – i <= K** is satisfied.

A

subsequenceof an array is obtained by deleting some number of elements (can be zero) from the array, leaving the remaining elements in their original order.

**Examples:**

Input:nums = [10, 2, -10, 5, 20], K = 2Output:37Explanation:The subsequence is [10, 2, 5, 20].Input:nums = [-1, -2, -3], K = 1Output:-1Input:nums = [10, -2, -10, -5, 20], K = 2Output:23

**Aprroach:**

- The optimal solution of this problem can be achieved by using the Sliding Window Maximum .
- For every index, check what is the maximum value that can be obtained from a window of size K before it. If the maximum value is negative, use zero instead.

`// C++ program to find the maximum sum ` `// subsequence under given constraint ` `#include <bits/stdc++.h> ` `using` `namespace` `std; ` ` ` `// Function return the maximum sum ` `int` `ConstrainedSubsetSum(vector<` `int` `>& nums, ` ` ` `int` `k) ` `{ ` ` ` `deque<pair<` `int` `, ` `int` `> > d; ` ` ` ` ` `// Iterating the given array ` ` ` `for` `(` `int` `i = 0; i < nums.size(); i++) ` ` ` `{ ` ` ` `// Check if deque is empty ` ` ` `nums[i] += d.size() ` ` ` `? max(d.back().first, 0) : 0; ` ` ` ` ` `while` `(d.size() && ` ` ` `d.front().first < nums[i]) ` ` ` `d.pop_front(); ` ` ` ` ` `d.push_front({ nums[i], i }); ` ` ` ` ` `if` `(d.back().second == i - k) ` ` ` `d.pop_back(); ` ` ` `} ` ` ` ` ` `int` `ans = nums[0]; ` ` ` ` ` `for` `(` `auto` `x : nums) ` ` ` `ans = max(ans, x); ` ` ` ` ` `return` `ans; ` `} ` ` ` `// Driver code ` `int` `main() ` `{ ` ` ` `vector<` `int` `> nums = { 10, -2, -10, ` ` ` `-5, 20 }; ` ` ` `int` `K = 2; ` ` ` ` ` `// Function call ` ` ` `cout << ConstrainedSubsetSum(nums, K) ` ` ` `<< endl; ` ` ` `return` `0; ` `} ` |

*chevron_right*

*filter_none*

**Output:**

23

**Time Complexity:** O(N)

**Space Complexity:** O(K)

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the **DSA Self Paced Course** at a student-friendly price and become industry ready.