Cod sursa(job #462298)

Utilizator voikybodea voichita voiky Data 10 iunie 2010 12:37:35
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.58 kb
#include<fstream>
using namespace std;

int n,i,j,st=1,dr=1,maxim,suma,x[6000001];

int main()
{
	ifstream f("ssm.in");ofstream g("ssm.out");
	f>>n>>x[1];
	maxim=x[1];
	for(i=2;i<=n;i++)
	{
		f>>x[i];
		if(x[i]>maxim){maxim=x[i];st=dr=i;}
	}
	if(maxim>0)
	{
		i=st=dr=1;
		suma=maxim=0;
		for(j=1;j<=n;j++)
		{
			suma=suma+x[j];
			if(suma>maxim || suma==maxim && j-i<dr-st){maxim=suma;st=i;dr=j;}
			else if(suma<0)
				 {
					if(maxim<0){maxim=0;st=dr=j;}
					i=j+1;suma=0;
				 }	
		}
	}
	g<<maxim<<' '<<st<<' '<<dr;
	f.close();g.close();
	return 0;
}