#include <iostream>
int maxSubarray(int a[], int size) {
if (size <= 0) std::cout << "error array size\n";
int max = 0x80000000;
int cur = 0;
int start, end;
while (cur < size) {
int sum = 0;
sum += a[cur];
start = end = cur;
max = sum > max ? sum : max;
if (sum >= 0) {
int tmp = cur + 1;
while (tmp < size) {
sum += a[tmp];
if (sum >= 0) { if (sum >= max) { max = sum; end = tmp; } tmp++; }
else if (a[tmp] < 0) {
cur = tmp + 1; break; }
else {
cur = tmp; break;
}
}
if (tmp == size) break;
}
else cur++;
}
std::cout << "start:" << start << ",end:" << end << std::endl;
return max;
}
int main() {
int a[] = //{ -8,-2,-3,2,-6 };
//{ 1, -2, 3, 10, -4, 7, 2, -5 };
//{ -8,8,3,2,-6, 6};
//{ -2, 2, 6, 7 };
{ 2, -2, 6, 7, -9 };
int r = maxSubarray(a, sizeof(a) / sizeof(int));
std::cout << "result:" << r << std::endl;
return 0;
}