#503. NOIP2009TG-27

NOIP2009TG-27

27.(完善程序)

(最大连续子段和)给出一个数列(元素个数不多于 100),数列元素均为负整数、正整数、0。请找出数列中的一个连续子数列,使得这个子数列中包含的所有元素之和最大,在和最大的前提下还要求该子数列包含的元素个数最多,并输出这个最大和以及该连续子数列中元素的个数。例如数列为 4,-5,3,2,4 时,输出 9 和 3;数列为 1 2 3 -5 0 7 8 时,输出 16 和 7。

#include <iostream>
using namespace std;
int a[101];
int n,i,ans,len,tmp,beg,end;
int main(){
  cin >> n;
  for (i=1;i<=n;i++)
    cin >> a[i];
  tmp=0;
  ans=0;
  len=0;
  beg= ____________________ ;
  for (i=1;i<=n;i++){
    if (tmp+a[i]>ans){
      ans=tmp+a[i];
      len=i-beg;
    }
    else if ( ____________________ &&i-beg>len)
      len=i-beg;
    if (tmp+a[i] ____________________ ){
      beg= ____________________ ;
      tmp=0;
    }
    else
      ____________________ ;
  }
  cout << ans << " " << len << endl;
  return 0;
}

①:{{ input(1) }}

②:{{ input(2) }}

③:{{ input(3) }}

④:{{ input(4) }}

⑤:{{ input(5) }}