Cod sursa(job #525808)

Utilizator icepowdahTudor Didilescu icepowdah Data 26 ianuarie 2011 13:06:28
Problema Subsecventa de suma maxima Scor 95
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <fstream>
#include <climits>
using namespace std;

typedef struct holder {
	int sum;
	int start;
	int end;
};

int main(void)
{
	int N, i, *secv;
	holder prevBest, currBest, bestAll;

	ifstream f("ssm.in");
	f>>N;
	secv = new int[N];	
	for (i=0;i<N;i++)
	{
		f>>secv[i];
	}
	f.close();

	prevBest.start = 0;
	prevBest.end = 0;
	prevBest.sum = secv[0];
	bestAll = prevBest;

	for (i=1;i<N;i++)
	{
		currBest.sum = secv[i];
		currBest.start = currBest.end = i;

		if (currBest.sum < prevBest.sum+secv[i])
		{
			currBest.sum = prevBest.sum+secv[i];
			currBest.start = prevBest.start;
		}

		if (currBest.sum > bestAll.sum)
		{
			bestAll = currBest;
		}
		prevBest = currBest;
	}

	ofstream g("ssm.out");
	g << bestAll.sum<<' '<<bestAll.start+1<<' '<<bestAll.end+1<<'\n';
	g.close();	

	delete[] secv;

	return 0;
}