Cod sursa(job #340103)

Utilizator alex.cepoiAlexandru Cepoi alex.cepoi Data 13 august 2009 02:40:03
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <fstream>
#include <climits>
using namespace std;

ifstream cin ("ssm.in");
ofstream cout ("ssm.out");

int N, Max(INT_MIN), MaxPoz;

int start=1, stop=1, sum;
int Mstart, Mstop, Msum;

int GetPozitive (int i)
{
	for (; i<=N; ++i)
	{
		int x; cin>>x;
		if (x > Max) { Max = x, MaxPoz = i; } 

		if (x >= 0)
		{
			start = stop = i, sum = x;
			return i;
		}
	}
	return i;
}

void commit ()
{ Mstart = start, Mstop = stop, Msum = sum; }

int main()
{

	cin>>N;
	for (int i=1; i<=N; ++i)
	{
		int x; cin>>x;
		if (x > Max) { Max = x, MaxPoz = i; }

		sum += x, stop = i;
		if (sum < 0) i = GetPozitive (i+1);
		if (sum > Msum) commit ();
	}

	if (Max < 0) cout<<Max<<' '<<MaxPoz<<' '<<MaxPoz<<'\n';
	else cout<<Msum<<' '<<Mstart<<' '<<Mstop<<'\n';
	return 0;
}