Cod sursa(job #2705445)

Utilizator zerolightningIon Bobescu zerolightning Data 12 februarie 2021 16:56:59
Problema Subsecventa de suma maxima Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.91 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

#define MAX_KEPT_IN_MEMORY 

int N;
ifstream f("ssm.in");
ofstream g("ssm.out");

void solve()
{
	int sumMaxes[2];
	f>>sumMaxes[0];
	int nr;
	int ssMax = INT32_MIN;
	int ssEnd_Max = 0;
	int ssStart_Max = 0;
	int ssEnd = 0;
	int ssStart = 0;

	for (int i = 1; i < N; i++)
	{
		f >> nr;
		if (sumMaxes[0] >= 0)
		{
			sumMaxes[1] = sumMaxes[0] + nr;
		}
		else
		{
			sumMaxes[1] = nr;
		}

		if (ssMax < sumMaxes[1])
		{
			ssMax = sumMaxes[1];
			ssStart_Max = ssStart;
			ssEnd_Max = ssEnd;
		}

		if (sumMaxes[1] < 0)
		{
			ssStart = i + 1;
			ssEnd = i + 1;
		}
		else
		{
			ssEnd++;
		}

		sumMaxes[0] = sumMaxes[1];
	}
	g << ssMax << " " << ssStart_Max + 1 << " " << ssEnd_Max + 1;
}

int main()
{
	// Program
	f >> N;
	solve();

	// Exit
	f.close();
	g.close();
	return 0;
}