Cod sursa(job #813570)

Utilizator MtkMarianHagrSnaf MtkMarian Data 15 noiembrie 2012 19:01:32
Problema Subsecventa de suma maxima Scor 55
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include<cstdio>

using namespace std ;
#define NMAX 600002
int n ,sum[NMAX],v[NMAX] , s , smax=0 , smin=NMAX , indleft=1 , indright=1 , indmin=1 ;
int main ()
{
	freopen("ssm.in" , "r" , stdin);
	freopen("ssm.out", "w",stdout);

	scanf("%d",&n);
	scanf("%d",&v[1]);
	sum[1]=v[1];
	for(int i = 2 ; i <= n ; ++i)
	{
		scanf("%d",&v[i]);
		sum[i] = sum[i-1]+ v[ i ];

		if(sum[i] < smin)
		{
				smin = sum[i]  ;
				indmin=i;
		}

		if( sum[ i ]- smin > smax )
		{
			indleft = indmin + 1 ;
			indright = i ;
			smax = sum[ i ] -smin ;
		}
		if( sum[ i ]-smin == smax )
			if( ( i - indmin ) < (indright-indleft)  )
			{
			indleft = indmin + 1  ;
			indright = i ;
			smax = sum[ i ] ;
			}
	}
	printf("%d %d %d" , smax ,indleft ,indright);
	return 0;
}