Cod sursa(job #896928)

Utilizator The_DisturbedBungiu Alexandru The_Disturbed Data 27 februarie 2013 18:00:30
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.54 kb
#include<cstdio>
int st,dr,max,stmax,drmax,s,n,x,nmax,pnmax;
bool ok;
int main()
{
    freopen("ssm.in","r",stdin);
    freopen("ssm.out","w",stdout);
    scanf("%d",&n);
    s=-1;
    max=0;
	nmax=-(1<<30);
    for(int i=1;i<=n;++i)
    {
        scanf("%d",&x);++dr;
		if(x<0)
		{
			if(x>nmax){nmax=x;pnmax=i;}
		}
		else ok=1;
        if(s<0){s=0;st=dr=i;}
        s+=x;
        if(s>max){max=s;stmax=st;drmax=dr;}
    }
	if(!ok)printf("%d %d %d",nmax,pnmax,pnmax);
    else printf("%d %d %d",max,stmax,drmax);
    return 0;
}