Cod sursa(job #558918)

Utilizator stephy_yoyoIonescu Stefania stephy_yoyo Data 17 martie 2011 15:06:14
Problema Subsecventa de suma maxima Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
# include <cstdio>

int v[6000000],suma[6000000],pred[6000000];

int main ()
{
	freopen ("ssm.in","r",stdin);
	freopen ("ssm.out","w",stdout);
	int n,smax=0,in=1,sf=1;
	scanf ("%d",&n);
	for (int i=1; i<=n;i++)
		scanf ("%d",&v[i]);
	suma[n]=v[n];
	pred[n]=n;
	for (int i=(n-1);i;i--)
	{
		if (suma[i+1]<=0)
		{
			suma[i]=v[i];
			pred[i]=i;
		}
		else
		{
			suma [i]=suma[i+1]+v[i];
			pred[i]=pred[i+1];
		}
	}
	for (int i=1; i<=n;i++)
	{
		if (suma[i]>smax)
		{
			smax=suma[i];
			in=i;
			sf=pred[i];
		}
		if (suma[i]==smax)
			if ((sf-in)>(pred[i]-i))
			{
				smax=suma[i];
				in=i;
				sf=pred[i];
			}
	}
	printf ("%d %d %d",smax,in,sf);
	return 0;
}