Cod sursa(job #328558)

Utilizator c_e_manuEmanuel Cinca c_e_manu Data 2 iulie 2009 14:37:26
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include<fstream>
#define N 6000001

using namespace std;

ifstream fin("ssm.in");
ofstream fout("ssm.out");

int s[N],i,st,dr,bestSum,beg,n,best[N];

int main()
{   fin>>n;
    for(i=1;i<=n;i++) fin>>s[i];
    bestSum=s[1];beg=1;st=1;dr=1;
    for(i=1;i<=n;i++)
	{	best[i]=s[i];				//presupunem ca incepem o secventa noua
		if(best[i]<best[i-1]+s[i])	//daca putem continua vechea secventa
			best[i]=best[i-1]+s[i];	//adunam elemntul curent
		else{ 
			if(s[i-1]==0)beg=i-1;					//altfel initializam indicele stang pentru nou secventa
			else beg=i;
		}			
		if(bestSum<best[i])			//daca am obtinut o suma mai mare facem modificarile necesare
		{	bestSum=best[i];
			st=beg;
			dr=i;
		}
	}
    fout<<bestSum<<' '<<st<<' '<<dr;
    return 0;
}