题目描述
给出一个数列(元素个数不多于100000),数列元素均为负整数、正整数、0。请找出数列中的一个连续子数列,使得这个子数列中包含的所有元素之和最大,在和最大的前提下还要求该子数列包含的元素个数最多,并输出这个最大和以及该连续子数列中元素的个数。例如数列为4,-5,3,2,4时,输出9和3;数列为1 2 3 -5 0 7 8时,输出16和7。
输入
输入第一行是一个正整数n,表示数的个数
输出
输出最大和。
样例输入
5 4 -5 3 2 4
样例输出
9
#include<bits/stdc++.h>
using namespace std;
int n,i,k,sum,ans,minn;
int main ()
{
cin>>n;
for(i=1;i<=n;i++)
{
cin>>k;
sum=sum+k;
if(sum-minn>ans)
ans=sum-minn;
if(sum<minn)
minn=sum;
}
cout<<ans<<endl;
return 0;
}