Maximum Subarray

Given an array of integers, return the sum of a contiguous subarray which has the largest sum. 

// Kadane's algorithm
int MaxSubSum(vector<int> &arr)
{
    int max = 0;
    int curr = 0;
 
    for (int e : arr)
    {
        curr += e;
        max = curr > max ? curr : max;
        curr = curr < 0 ? 0 : curr;
    }
 
    return max;
}