Cod sursa(job #618511)

Utilizator desoComan Andrei deso Data 15 octombrie 2011 17:39:56
Problema Subsecventa de suma maxima Scor 85
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <iostream>
#include <iomanip>
#include <fstream>
#include <cstring>
#include <cstdlib>
#include <string>
using namespace std;

#define INFILE "ssm.in" 
#define OUTFILE "ssm.out"
#define MAXN 6000005

int v[MAXN];

int main()
{
  ifstream fin(INFILE);

  int n, msum, mst, mend, sum, ist;
  fin >> n;

  for(int i=0; i<n; i++)
    fin >> v[i];

  msum = v[0];
  mst = mend = 0;
  sum = (msum < 0 ? 0 : msum);
  ist = (sum==msum ? 0 : 1);

  for(int i=1; i<n; i++)
  {
    sum += v[i];
    if( sum>msum )
      mst = ist, mend = i, msum = sum;
    if( sum<0 )
      sum = 0, ist = i+1;
  }

  ofstream fout(OUTFILE);
  fout << msum << " " << mst+1 << " " << mend+1 << "\n";
	
	return 0;
}