Cod sursa(job #1389389)

Utilizator vladvlad00Vlad Teodorescu vladvlad00 Data 16 martie 2015 11:07:46
Problema Subsecventa de suma maxima Scor 95
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include <fstream>

using namespace std;

FILE * fin=fopen("ssm.in","r");
ofstream fout("ssm.out");

struct secv
{
	int s, in, sf;
};

int n, v[6000005];
secv maxEndingHere, maxSoFar;

int main()
{
	int i;

	maxSoFar.s = -999999999;
	fscanf(fin,"%d",&n);
	for (i=1;i<=n;i++)
		fscanf(fin,"%d",&v[i]);
	for (i=1;i<=n;i++)
	{
		if (maxEndingHere.s + v[i] > v[i])
		{
			maxEndingHere.s+=v[i];
			maxEndingHere.sf++;
		}
		else
		{
			maxEndingHere.s = v[i];
			maxEndingHere.in = maxEndingHere.sf = i;
		}
		if (maxEndingHere.s > maxSoFar.s)
			maxSoFar = maxEndingHere;
	}
	fout << maxSoFar.s << ' ' << maxSoFar.in << ' ' << maxSoFar.sf << '\n';
	return 0;
}