Cod sursa(job #597646)

Utilizator dspMihaiDespotovici Mihai dspMihai Data 22 iunie 2011 18:27:19
Problema Subsecventa de suma maxima Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 kb
#include <stdio.h>
#define Nmax 6000001
long i,j,N,S,min,max,sum[Nmax],best[Nmax];
int nr[Nmax];
int main () 
{
	freopen("ssm.in", "r", stdin);
	freopen("ssm.out", "w", stdout);
	scanf("%d", &N);
	0;scanf("%d", &nr[1]); sum[1]=nr[1]; sum[0]=0;
	for(i=2; i<=N; i++) 
	{
		scanf("%d", &nr[i]);
		sum[i]=sum[i-1]+nr[i];
	}
	best[1]=sum[1]; min=0; max=1;
	for (i=2; i<=N; i++)
	{
		if (sum[i-1]<sum[min]) min=i-1;
		best[i]=sum[i]-sum[min];
		if (best[i]>best[max]) max=i;
	}
	S=best[max]-nr[max];
	i=max;
	while (S>0) S-=nr[--i];
	printf("%d %d %d\n", best[max],i,max);
	//for (i=1; i<=N; i++) printf("%d ", best[i]);
	
	return 0;
}