Cod sursa(job #558945)

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

int v[6000000],pred[6000000];

int main ()
{
	freopen ("ssm.in","r",stdin);
	freopen ("ssm.out","w",stdout);
	int n,smax,in,sf;
	scanf ("%d",&n);
	for (int i=1; i<=n;i++)
		scanf ("%d",&v[i]);
	pred[n]=n;
	in=n;
	sf=n;
	smax=v[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];
		}
		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;
}