Cod sursa(job #649414)

Utilizator PatrikStepan Patrik Patrik Data 15 decembrie 2011 23:40:41
Problema Subsecventa de suma maxima Scor 85
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
	#include<stdio.h>
	#include<climits>
	#define MAX 7000005
	FILE *f , *g ;
	long n , v[MAX] , min , pi1 , pi2 , pf , max = LONG_MIN , i;
	
	void citire();
	void solve();
	void tipar();
	
	int main()
	{
		citire();
		solve();
		tipar();
		return 0;
	}
	
	void citire()
	{
		f=fopen("ssm.in" , "r" );
		fscanf(f ,"%ld" , &n );
		for ( long  i = 1 ; i<= n ; ++i )
			fscanf(f , "%ld" , &v[i] );
		fclose(f);
	}
	
	void solve()
	{
		for ( i = 1 ; i<= n ; ++i )
			v[i] = v[i-1] + v[i];
		pi1 = 1;
		for ( i = 1 ; i <= n ; ++i )
		{
			if(v[i]-min > max )	
			{
				max = v[i] - min;
				pf = i;
				pi1 = pi1;
			}
			if(v[i] < min )
			{
				pi1 = i+1;
				min = v[i];
			}
		}
	}
	
	void tipar()
	{
		g=fopen("ssm.out" , "w" );
		fprintf(g , "%ld %ld %ld " , max  , pi1 , pf );
		fclose(g);
	}