Cod sursa(job #383161)

Utilizator wscsprint3rIrimescu Stefan wscsprint3r Data 15 ianuarie 2010 21:01:37
Problema Secventa 2 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
//
#include<stdio.h>
#include<string.h>
#define mic -20000000
FILE  *f=fopen("secv2.in","r"),*g=fopen("secv2.out","w");
long s[50005],v[50005],i,n,k,poz,nr[50005],sw,d,max,ss;

void findd()
{
max=mic;
for(i=1;i<=n;i++)
	s[i]=max;

	s[1]=v[1];
	nr[1]=1;


	for(i=2;i<=n;i++)
	{
		if(s[i-1]>0)
		{
			s[i]=v[i]+s[i-1];
            nr[i]=nr[i-1]+1;
            if (s[i]>max && nr[i]>(ss-d+1))
            {
                max = s[i];
                ss = i;
                d = i - nr[i]+1;
			}
		}
			
			
		else
		
		{	
			s[i]=v[i];
			nr[i]=1;
			if(s[i]>max&&nr[i]>(ss-d+1))
			{
				max = s[i];
                ss = i;
                d = i - nr[i]+1;
			}
			
			
		}
		
		
	}
}


int main()
{
	fscanf(f,"%ld",&n);
	fscanf(f,"%ld",&k);
	
	for(i=1;i<=n;i++)
		fscanf(f,"%ld", &v[i]);
	
	findd();
	
	if(max==mic)
	{
		sw=1;
		for(i=1;i<=n;i++)
			v[i]=-v[i];
		findd();
	}
	if(sw==0)	
fprintf(g,"%ld %ld %ld",d,ss, max);
	else
fprintf(g,"%ld %ld %ld",d,ss, -max);
		
fclose(f);
fclose(g);
	return 0;
}