Cod sursa(job #469081)

Utilizator Bogdan_tmmTirca Bogdan Bogdan_tmm Data 6 iulie 2010 10:34:53
Problema Subsecventa de suma maxima Scor 95
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include<algorithm>
using namespace std;
struct p
{
	int st,dr,s;
	p()
	{
		s=-(1<<30);
	}
};
p sMax,sPar;
int n,i,x;
char parse[9187];
int DIM=9187,ind=9186;

void read(int &x)
{
	x=0;
	bool t=1;
	while((parse[ind]<'0'||parse[ind]>'9')&&parse[ind]!='-')
		if(++ind==DIM)
			fread(parse,1,DIM,stdin),ind=0;

	if(parse[ind]=='-')
	{
		t=0;
		if(++ind==DIM)
			fread(parse,1,DIM,stdin),ind=0;
	}

	while('0'<=parse[ind]&&parse[ind]<='9')
	{
		x=x*10+parse[ind]-'0';
		if(++ind==DIM)
			fread(parse,1,DIM,stdin),ind=0;
	}
	if(t==0)
		x*=-1;
}

int main()
{
	freopen("ssm.in","r",stdin);
	freopen("ssm.out","w",stdout);

	scanf("%d",&n);
	for(i=1;i<=n;i++)
	{
		read(x);
		if(sPar.s<0)
		{
			sPar.s=x;
			sPar.st=sPar.dr=i;
		}
		else
		{
			sPar.s+=x;
			sPar.dr=i;
			if(sPar.s>sMax.s)
				sMax=sPar;
		}
	}
	printf("%d %d %d\n",sMax.s,sMax.st,sMax.dr);
	return 0;
}