Cod sursa(job #261145)

Utilizator blasterzMircea Dima blasterz Data 17 februarie 2009 21:42:11
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
//Secventa de suma maxima
#include <cstdio>
#define dim 8192
#define oo 0x3f3f3f3f
char ax[dim];
int pz;

inline void cit(int &x)
{
	x=0;
	while((ax[pz]<'0' || ax[pz]>'9') && ax[pz] != '-')
		if(++pz == dim) fread(ax,1,dim,stdin),pz=0;
	
	int neg=0;
	if(ax[pz] == '-')
	{
		neg=1;
		if(++pz == dim)fread(ax,1,dim,stdin),pz=0;
	}
	
	while(ax[pz] >= '0' && ax[pz] <= '9')
	{
		x=x*10+ax[pz]-'0';
		if(++pz == dim) fread(ax,1,dim,stdin),pz=0;
	}
	if(neg) x=-x;
}

int main()
{
	
	freopen("ssm.in","r",stdin);
	freopen("ssm.out","w",stdout);
	int n,i,v,s=0,j,p,q;
	cit(n);
	
	int sol=-oo;
	
	for(i=1; i <= n; ++i)
	{
		cit(v);
		
		if(s < 0) s=v, j=i;
		else s+=v;
		
		if(sol < s) sol=s, p=j, q=i;
	}
	
	printf("%d %d %d\n", sol, p, q);
	
	
	return 0;
}