#include<bits/stdc++.h>
using namespace std;
int n,a[10000+5];
int main()
{
int i,ans,t,tl,tr,l,r;
while(~scanf("%d",&n))
{
memset(a,0,sizeof(a));
for(i=0; i<n; i++)
scanf("%d",&a[i]);
t=tl=0;
ans=r=l=-1;
for(i=0; i<n; i++)
{
t+=a[i];
if(t<0)
{
t=0;
tl=i+1;
}
else
{
if(t>ans)
{
ans=t;
l=tl;
r=i;
}
else if(t==ans&&l+r>i+tl)
{
l=tl;
r=i;
}
}
}
if(l==-1) printf("0 %d %d\n",a[0],a[n-1]);
else printf("%d %d %d\n",ans,a[l],a[r]);
}
return 0;
}
pta 01-复杂度2 Maximum Subsequence Sum (25分)
最新推荐文章于 2021-09-18 10:21:19 发布
本文详细探讨了如何解决PTA在线判题平台上的'复杂度2 Maximum Subsequence Sum'问题。通过分析问题背景,我们讲解了动态规划的方法来找出数组中的最大子序列和,介绍了如何避免负数累加导致的负数和,并提供了完整的算法实现过程。
摘要由CSDN通过智能技术生成