#include<iostream>
using namespace std;
int main()
{
int num;
cin>>num;
int a[num];
for(int i=0;i<num;i++)
{
cin>>a[i];
}
int maxsum=0;
int temp=0;
int i;
int begin,end;
int detect=a[0];
for(i=0;i<num;i++)
{
temp+=a[i];
if(temp<0)
{
temp=0;
detect=a[i+1];
//printf("%d",detect);
}
else
{
if(temp>maxsum)
{
maxsum=temp;
end=a[i];
begin =detect;
//10printf("%d\n",begin);
}
}
//temp+=a[i];
}
int flag=0;
for(i=0;i<num;i++)
{
if(a[i]==0)
{
flag=1;
break;
}
}
//printf("%d\n",flag);
if(maxsum>0)
printf("%d %d %d",maxsum,begin,end);
else if(maxsum==0&&flag)
{
printf("%d %d %d",0,0,0);
}
else
printf("%d %d %d",0,a[0],a[num-1]);
return 0;
}
认真学数据结构算法了,想着以c为基础的好多读明白代码就可以了,不一定非要用c这么复杂来写,考研的时候再说,现在就先用STL写。
PTA对程序的严谨性还是高啊。最后0和负数混杂和单纯负数都得分类。