#include <stdio.h>
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 = (max_till_i > 0) ? max_till_i : 0;
max_sum = (max_sum > max_till_i) ? max_sum : max_till_i;
}
return max_sum;
}
int main()
{
int arr[] = { 1, -2, 2, -3, 4, -1, -1, 2, 3, -5, 4 };
int len = sizeof(arr)/sizeof(arr[0]);
printf("%d\n", max_subarray_sum(arr, len)); // 4 - 1 - 1 + 2 + 3 = 7
return 0;
}
/*
run:
7
*/