#include <iostream>
int max_subarray_sum(int arr[], int len) {
int max_sum = 0;
int max_till_i = 0;
for (int i = 0; i < len; i++) {
max_till_i = max_till_i + arr[i];
max_till_i = std::max(max_till_i, 0);
max_sum = std::max(max_sum, max_till_i);
}
return max_sum;
}
int main()
{
int arr[] = { 1, -2, 2, -3, 4, -1, -1, 2, 3, -5, 4 }; // 4 - 1 - 1 + 2 + 3 = 7
int len = sizeof(arr)/sizeof(arr[0]);
std::cout << max_subarray_sum(arr, len);
}
/*
run:
7
*/