Cod sursa(job #525810)

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

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

int main(void)
{
	int N, i;
	holder prevBest, currBest, bestAll;
	
	prevBest.sum = INT_MIN;
	bestAll = prevBest;

	ifstream f("ssm.in");
	f>>N;

	for (i=0;i<N;i++)
	{
		f>>currBest.sum;
		currBest.start = currBest.end = i;

		if (prevBest.sum >= 0)
		{
			currBest.sum += prevBest.sum;
			currBest.start = prevBest.start;
		}

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

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