Skip to content
Related Articles
Open in App
Not now

Related Articles

C++ Program for Size of The Subarray With Maximum Sum

Improve Article
Save Article
  • Last Updated : 20 Jan, 2022
Improve Article
Save Article

An array is given, find length of the subarray having maximum sum.

Examples : 

Input :  a[] = {1, -2, 1, 1, -2, 1}
Output : Length of the subarray is 2
Explanation: Subarray with consecutive elements 
and maximum sum will be {1, 1}. So length is 2

Input : ar[] = { -2, -3, 4, -1, -2, 1, 5, -3 }
Output : Length of the subarray is 5
Explanation: Subarray with consecutive elements 
and maximum sum will be {4, -1, -2, 1, 5}. 

This problem is mainly a variation of Largest Sum Contiguous Subarray Problem.
The idea is to update starting index whenever sum ending here becomes less than 0.

C++




// C++ program to print length of the largest 
// contiguous array sum
#include<bits/stdc++.h>
using namespace std;
  
int maxSubArraySum(int a[], int size)
{
    int max_so_far = INT_MIN, max_ending_here = 0,
       start =0, end = 0, s=0;
  
    for (int i=0; i< size; i++ )
    {
        max_ending_here += a[i];
  
        if (max_so_far < max_ending_here)
        {
            max_so_far = max_ending_here;
            start = s;
            end = i;
        }
  
        if (max_ending_here < 0)
        {
            max_ending_here = 0;
            s = i + 1;
        }
    }
      
    return (end - start + 1);
}
  
/*Driver program to test maxSubArraySum*/
int main()
{
    int a[] = {-2, -3, 4, -1, -2, 1, 5, -3};
    int n = sizeof(a)/sizeof(a[0]);
    cout << maxSubArraySum(a, n);
    return 0;
}


Output : 

5

 

Please refer complete article on Size of The Subarray With Maximum Sum for more details!


My Personal Notes arrow_drop_up
Related Articles

Start Your Coding Journey Now!