Cod sursa(job #263336)

Utilizator anna_bozianuBozianu Ana anna_bozianu Data 20 februarie 2009 11:12:24
Problema Subsecventa de suma maxima Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include<stdio.h>
#define tip long long
tip n,i,ok,v,s,b,e,S,B,E;
void readd(),solve(),prints();
int main()
{
	readd();
	solve();
	prints();
	return 0;
}
void readd()
{
	freopen("ssm.in","r",stdin);
	freopen("ssm.out","w",stdout);
	scanf("%lld",&n);
	scanf("%lld",&v);
	if(v>0){ok=1;return;}
	else {S=v;B=E=1;}
	for(i=2;i<=n;i++)
	{
		if(v>0){ok=1;return;}
		if(v>S){ S=v;B=E=i;}
	}
}
void solve()
{
	if(!ok)return;
	freopen("ssm.in","r",stdin);
	scanf("%lld",&n);
	scanf("%lld",&s);S=s;B=E=b=e=1;
	for(;;)
	{
		if(s>=0)
			{ if(s>S||(s==S&&(e-b<E-B))){S=s;B=b;E=e;}
			  if(e==n)return;
			  e++;scanf("%lld",&v);s+=v;
			  continue;
			}
		if(e==n)return;
		b=e+1;e=b;scanf("%lld",&s);
	}
}
void prints()
{
	printf("%lld %lld %lld\n",S,B,E);
}