#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++;
}
if(sum>max_sum)
max_sum=sum;
int p=0;
while((arr[i]<0)&&(i<=high))
{
p=p+arr[i];
i++;
}
if(sum+p<=0)
sum=0;
if(i>high)
return max_sum;
}
}
int main()
{
int arr[]={2,3,-1,-2,-4,1,2,-4};
int n=sizeof(arr)/sizeof(arr[0]);
cout<<fun(arr,n-1)<<" is maximum contiguous sum.\n";
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPHN0cmluZy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwppbnQgZnVuKGludCBhcnJbXSxpbnQgaGlnaCkKewoJaW50IHQsbWF4X3N1bT0wLHN1bT0wLGk9MDsKCXdoaWxlKDEpCgl7CgkJd2hpbGUoKGFycltpXT4wKSYmKGk8PWhpZ2gpKQoJCXsKCQkJc3VtPXN1bSthcnJbaV07CgkJCWkrKzsKCQl9CgkJaWYoc3VtPm1heF9zdW0pCgkJICAgbWF4X3N1bT1zdW07CgkJaW50IHA9MDsKCQl3aGlsZSgoYXJyW2ldPDApJiYoaTw9aGlnaCkpCgkJewoJCQlwPXArYXJyW2ldOwoJCQlpKys7CgkJfQoJCWlmKHN1bStwPD0wKQoJCSAgICBzdW09MDsKCQlpZihpPmhpZ2gpCiAgICAgICAgICAgIHJldHVybiBtYXhfc3VtOwkJCgl9Cgp9CmludCBtYWluKCkKewogICAgaW50IGFycltdPXsyLDMsLTEsLTIsLTQsMSwyLC00fTsKICAgIGludCBuPXNpemVvZihhcnIpL3NpemVvZihhcnJbMF0pOwogICAgY291dDw8ZnVuKGFycixuLTEpPDwiIGlzIG1heGltdW0gY29udGlndW91cyBzdW0uXG4iOwoJcmV0dXJuIDA7Cn0=