#include <cstdio>
#include <cstdlib>
#include <map>
#include <iostream>
#include <string>
#include <vector>
#include <queue>
#include <math.h>
#include <algorithm>
using namespace std;
struct node
{
int start;
int end;
int sum;
}d[10010];
int n;
int main()
{
scanf("%d",&n);
int a[10010];
int MaxN=-1;
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
d[0].sum=a[0];
d[0].start=0;
if(d[0].sum>0)
{
MaxN=d[0].sum;
}
for(int i=1;i<n;i++)
{
if(d[i-1].sum<0)
{
d[i].sum=a[i];
d[i].start=i;
}
else
{
d[i].sum=d[i-1].sum+a[i];
d[i].start=d[i-1].start;
}
if(d[i].sum>MaxN)
{
MaxN=d[i].sum;
}
}
if(MaxN>=0)
{
for(int i=0;i<n;i++)
{
if(d[i].sum==MaxN)
{
printf("%d %d %d",d[i].sum,a[d[i].start],a[i]);
break;
}
}
}
else
{
printf("0 %d %d",a[0],a[n-1]);
}
printf("\n");
system("pause");
return 0;
}
PAT甲1007 Maximum Subsequence Sum (25)
猜你喜欢
转载自blog.csdn.net/yhy489275918/article/details/80369303
今日推荐
周排行