Cod sursa(job #2314953)

Utilizator AnnaLipianuLipianu Ana AnnaLipianu Data 9 ianuarie 2019 12:01:34
Problema Subsecventa de suma maxima Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.65 kb
#include <cstdio>
using namespace std;
int main()
{
    long long n,x,s,pi,pmi,pf,pmf,i,sm,xm=-2147483647,ok=0,pxm;
    freopen("ssm.in","r",stdin);
    freopen("ssm.out","w",stdout);
    scanf("%lld%lld",&n,&x);
    if(x>0)
		s=x;
	else
		s=0;
	sm=s;
	pi=pf=pmi=pmf=1;
	for(i=2;i<=n;i++)
	{
		scanf("%lld",&x);
		if(x<=0&&x>xm)
			{
				xm=x;
				pxm=i;
			}
		if(x>0)ok=1;
		if(s+x>0)
		{
			s=s+x;
			pf++;
		}
		else
		{
			s=0;
			pi=i+1;
			pf=i;
		}
		if(s>sm)
		{
			sm=s;
			pmi=pi;
			pmf=pf;
		}
	}
	if(ok==1)
	printf("%lld %lld %lld",sm,pmi,pmf);
	else
	printf("%lld %lld %lld",xm,pxm,pxm);
    return 0;
}