#include<iostream>
#include<string.h>
using namespace std;
int fun(int arr[],int high)
{
int t,max_sum=0,sum=0,i=0;
while(1)
{
while((arr[i]>0)&&(i<=high))
{
sum=sum+arr[i];
i++;
}
t=sum;
while((arr[i]<0)&&(i<=high))
{
max_sum=t;
if(sum>0)
{
sum=sum+arr[i];
i++;
}
else
{
sum=0;
i++;
}
}
if(i>high)
return max(max_sum,sum);
}
}
int main()
{
int arr[]={-2, -3, 4, -1, -2, 1, 5, -3};;
int n=sizeof(arr)/sizeof(arr[0]);
cout<<fun(arr,n-1)<<" is maximum contiguous sum.\n";
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPHN0cmluZy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwppbnQgZnVuKGludCBhcnJbXSxpbnQgaGlnaCkKewoJaW50IHQsbWF4X3N1bT0wLHN1bT0wLGk9MDsKCXdoaWxlKDEpCgl7CgkJd2hpbGUoKGFycltpXT4wKSYmKGk8PWhpZ2gpKQoJCXsKCQkJc3VtPXN1bSthcnJbaV07CgkJCWkrKzsKCQl9CgkJdD1zdW07CgkJd2hpbGUoKGFycltpXTwwKSYmKGk8PWhpZ2gpKQoJCXsKCQkJbWF4X3N1bT10OwoJCQlpZihzdW0+MCkKCQkJewoJCQkKCQkJc3VtPXN1bSthcnJbaV07CgkJCWkrKzsKCSAJICAgIH0KCSAJICAgIGVsc2UKCSAJICAJewoJCQkgICBzdW09MDsKCQkJICAgaSsrOwkKCSAJICAgIH0KCQl9CgkJaWYoaT5oaWdoKQogICAgICAgICAgICByZXR1cm4gbWF4KG1heF9zdW0sc3VtKTsJCQoJfQoKfQppbnQgbWFpbigpCnsKICAgIGludCBhcnJbXT17LTIsIC0zLCA0LCAtMSwgLTIsIDEsIDUsIC0zfTs7CiAgICBpbnQgbj1zaXplb2YoYXJyKS9zaXplb2YoYXJyWzBdKTsKICAgIGNvdXQ8PGZ1bihhcnIsbi0xKTw8IiBpcyBtYXhpbXVtIGNvbnRpZ3VvdXMgc3VtLlxuIjsKCXJldHVybiAwOwp9