Cod sursa(job #266715)

Utilizator GheorgheMihaiMihai Gheorghe GheorgheMihai Data 26 februarie 2009 00:02:21
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.58 kb
#include<stdio.h>
long n;
long v[6000002];//6000000


void read()
{
freopen("ssm.in","r",stdin);
freopen("ssm.out","w",stdout);
long i;
scanf("%ld",&n);
for(i=1;i<=n;i++)
	scanf("%ld",&v[i]);

}


long rez(long &st, long &dr)
{
long i,cst,cdr,max=-2000000000;
long s=0;
for(i=1;i<=n;i++)
	{
	if(s+v[i]>=v[i])
		s=s+v[i];
	else
		{
		s=v[i];
		st=i;
		}
	if(s>max)
		{
		cst=st;
		cdr=i;
		max=s;
		}
	}
st=cst;
dr=cdr;
return max;
}


int main()
{
long max;
long st=1,dr=n;
read();
max=rez(st,dr);
printf("%ld %ld %ld\n",max,st,dr);
return 0;
}