Cod sursa(job #383158)

Utilizator wscsprint3rIrimescu Stefan wscsprint3r Data 15 ianuarie 2010 20:44:01
Problema Secventa 2 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 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,s,d,max;

void find()
{
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]>(s-d+1))
            {
                max = s[i];
                s = i;
                d = i - nr[i]+1;
			}
		}
			
			
		else
		
		{	
			s[i]=v[i];
			nr[i]=1;
			if(s[i]>max&&nr[i]>(s-d+1))
			{
				max = s[i];
                s = i;
                d = i - nr[i]+1;
			}
			
			
		}
		
		
	}
}


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