Cod sursa(job #274856)

Utilizator drag0s93Mandu Dragos drag0s93 Data 10 martie 2009 00:45:32
Problema Subsecventa de suma maxima Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include<stdio.h>

#define IN "ssm.in","r",stdin
#define OUT "ssm.out","w",stdout
#define Max 6000020

int n,min=2000000;
int sum[Max],stiva[Max];
int e=1,bestsum,pozmin=0,pozmax=1;

void citire()
{
	int nr;
	freopen(IN);
	scanf("%d",&n);
	for(int i=1;i<=n;++i)
	{
		scanf("%d",&nr);
		sum[i]=sum[i-1]+nr;
	}
}

void solve()
{
	
	stiva[e++]=sum[1];
	bestsum=stiva[e];
	for(int i=2;i<=n;++i)
	{
		if(stiva[e-1]>sum[i])
		{
			if(bestsum<sum[pozmax]-sum[pozmin])
				bestsum=sum[pozmax-1]-sum[pozmin];
			e=1;
			stiva[e]=sum[i];
			if(e==1)
				pozmin=i;
			++e;
		}
		else 
			pozmax=i;
	}
	
			if(bestsum<sum[pozmax]-sum[pozmin])
				bestsum=sum[pozmax-1]-sum[pozmin];
}

void afisare()
{
	freopen(OUT);
	printf("%d %d %d\n",bestsum,pozmin,pozmax-1);
}
int main()
{
	citire();
	solve();
	afisare();
	return 0;
}