Find minimum subarray sum for each index i in subarray [i, N-1]Given an array arr[] of size N, the task is to find the minimum subarray sum in the subarrays [i, N-1] for all i in [0, N-1].Examples:Input: arr[ ] = {3, -1, -2}Output: 3 -3 -2Explanation: For (i = 1) i.e. {3, -1, -2}, the minimum subarray sum is -3 for {-1, -2}.For (i = 2) i.e. {-1, -2}, the minimum subarray sum is -3 for {-1, -2}.For (i = 3) i.e. {-2}, the minimum subarray sum is -2 for {-2}.Input: arr[ ] = {5, -3, -2, 9, 4}Output: -5 -5 -2 4 4Approach: The problem can be solved by using the standard Kadane’s algorithm for maximum subarray sum. Follow the steps below to solve this problem:Below is the implementation of the above approach:C++#include using namespace std; int kadane(int arr[], int start, int end){ int currMax = arr[start]; int maxSoFar = arr[start]; for (int i = start + 1; i < end + 1; i++) { currMax = max(arr[i], arr[i] + currMax); maxSoFar = max(maxSoFar, currMax); } return maxSoFar;} void minSubarraySum(int arr[], int n){ for (int i = 0; i < n; i++) { arr[i] = -arr[i]; } for (int i = 0; i < n; i++) { int result = kadane(arr, i, n - 1); result = -result; cout