Cod sursa(job #320177)

Utilizator c_e_manuEmanuel Cinca c_e_manu Data 3 iunie 2009 21:20:08
Problema Subsecventa de suma maxima Scor 95
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 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=-N;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 beg=i;//altfel initializam indicele stang pentru nou secventa
		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;
}