Cod sursa(job #713546)

Utilizator raulstoinStoin Raul raulstoin Data 14 martie 2012 19:10:08
Problema Subsecventa de suma maxima Scor 95
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include<fstream>
using namespace std;
long a[6000000],n;
void citire()
{
	long i;
	freopen("ssm.in","r",stdin);
	scanf("%ld",&n);
	for(i=0;i<n;i++)
		scanf("%ld",&a[i]);
}
void suma()
{
	long i,s,maxim,sw=1,pi,pj,pip;
	maxim=s=a[0];
	pi=pj=pip=1;
	for(i=1;i<n;i++)
	{
		s+=a[i];
		if(s>maxim)
		{
			maxim=s;
			if(!sw)
			{
				sw=1;
				pi=i+1;
			}
			else
				pi=pip;
			pj=i+1;
		}
		if(s<0)
		{
			sw=0;
			s=a[i];
			if(s>maxim)
			{
				maxim=s;
				if(!sw)
				{
					sw=1;
					pi=i+1;
				}
				pj=i+1;
			}
			s=0;
			sw=0;
		}
		else
			if(!sw)
			{
				sw=1;
				pip=i+1;
			}
	}
	freopen("ssm.out","w",stdout);
	printf("%ld %ld %ld",maxim,pi,pj);
}
int main()
{
	citire();
	suma();
	return 0;
}