Cod sursa(job #448174)

Utilizator andrei.sfrentSfrent Andrei andrei.sfrent Data 2 mai 2010 23:38:38
Problema Subsecventa de suma maxima Scor 95
Compilator cpp Status done
Runda Arhiva educationala Marime 0.53 kb
#include <fstream>

using namespace std;

#define N 6000000

int n;
int v[N + 1];
int d[N + 1];

int main()
{
	ifstream fi("ssm.in");
	ofstream fo("ssm.out");

	fi >> n;
	int i;
	for(i = 1; i <= n; ++i) fi >> v[i];
	
	int inc = 1, sf = 1, ssm = v[1];
	int last_inc = 1;
	d[1] = v[1];
	for(i = 2; i <= n; ++i)
	{
		d[i] = v[i];
		if(v[i] < v[i] + d[i - 1]) d[i] += d[i - 1];
		if(d[i - 1] <= 0) last_inc = i;
		if(ssm < d[i])
		{
			ssm = d[i];
			sf = i;
			inc = last_inc;
		}
	}

	fo << ssm << " " << inc << " " << sf << "\n";

	return 0;
}