Cod sursa(job #558935)

Utilizator stephy_yoyoIonescu Stefania stephy_yoyo Data 17 martie 2011 15:13:57
Problema Subsecventa de suma maxima Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.62 kb
# include <cstdio>

int v[6000000],pred[6000000];

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