#include<iostream>
#include<algorithm>
using namespace std;
const int maxn=10010;
int A[maxn],dp[maxn],st[maxn];
int main(){
int n,count=0;
cin>>n;
for(int i=0;i<n;i++){
cin>>A[i];
if(A[i]<0) count++;
} if(count==n){
printf("0 %d %d\n",A[0],A[n-1]);
return 0;
}
dp[0]=A[0];
for(int i=1;i<n;i++){
if(A[i]>dp[i-1]+A[i]){
st[i]=i;
dp[i]=A[i];
}else{
st[i]=st[i-1];
dp[i]=dp[i-1]+A[i];
}
}
int k=0;
for(int i=1;i<n;i++) if(dp[k]<dp[i]) k=i;
printf("%d %d %d\n",dp[k],A[st[k]],A[k]);
return 0;
}
1007 Maximum Subsequence Sum
最新推荐文章于 2022-11-07 13:19:46 发布