#include <iostream>
using namespace std;
const int maxn=10001;
int a[maxn],dp[maxn];
int main()
{
int n,flag=0,m,start,endd,s,e;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>a[i];
if(a[i]>=0)
flag=1;
}
//如果全是负数
if(flag==0)
{
cout<<0<<" "<<a[0]<<" "<<a[n-1]<<endl;
return 0;
}
m=dp[0]=a[0];
start=endd=s=e=0;
for(int i=1;i<n;i++)
{
if(a[i]>(dp[i-1]+a[i]))
{
dp[i]=a[i];
s=e=i;
}
else
{
dp[i]=dp[i-1]+a[i];
e=i;
}
if(m<dp[i])
{
m=dp[i];
start=s;
endd=e;
}
}
cout<<m<<" "<<a[start]<<" "<<a[endd]<<endl;
return 0;
}
PAT甲级(9):Max Subsequence Sum
最新推荐文章于 2022-05-06 09:10:14 发布