Cod sursa(job #634261)

Utilizator ContraPunctContrapunct ContraPunct Data 15 noiembrie 2011 21:30:05
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.31 kb
#include<fstream>
const int Nmax = 6000005;
using namespace std;

ifstream fin("ssm.in");
ofstream fout("ssm.out");

int indice_inceput,indice_sfarsit;
int x,suma;
int lungime;
int n;

void Sol()
{
	int i;
	fin>>n;
	indice_inceput = indice_sfarsit = 1;
	fin>>x;
	suma = x;
	
	int suma_partiala = x;
	int ind_inceput = 1;

	for( i=2;i<=n;++i)
	{
		fin>>x;
		if( suma_partiala + x >= x && x >0 )
		{
			suma_partiala = suma_partiala + x;
		}
		else
		if( suma_partiala +x >= x && x < 0 )
		{
			if(suma_partiala > suma)
			{
				indice_inceput = ind_inceput;
				indice_sfarsit = i-1;
				suma = suma_partiala;
			}	
			suma_partiala = suma_partiala + x;
		}
		else
		if( suma_partiala + x >= x && x == 0 )
		{
			if(suma_partiala > suma)
			{
				indice_inceput = ind_inceput;
				indice_sfarsit = i-1;
				suma = suma_partiala;
			}	
		}
		else
		{
			if(suma_partiala > suma)
			{
				indice_inceput = ind_inceput;
				indice_sfarsit = i-1;
				suma = suma_partiala;
			}	
			ind_inceput = i;
			suma_partiala = x;
		}
	}
	if(suma_partiala > suma)
	{
		indice_inceput = ind_inceput;
		indice_sfarsit = i-1;
		suma = suma_partiala;
	}	

	fout<<suma<<" "<<indice_inceput<<" "<<indice_sfarsit<<"\n";
}

int main()
{
	Sol();
	fout.close();
	fin.close();
	return 0;
}