Cod sursa(job #1389385)

Utilizator vladvlad00Vlad Teodorescu vladvlad00 Data 16 martie 2015 11:06:20
Problema Subsecventa de suma maxima Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include <fstream>

using namespace std;

ifstream fin("ssm.in");
ofstream fout("ssm.out");

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

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

int main()
{
	int i;

	maxSoFar.s = INT_MIN;
	fin >> n;
	for (i=1;i<=n;i++)
		fin >> 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;
}