Cod sursa(job #2769552)

Utilizator sebimihMihalache Sebastian sebimih Data 16 august 2021 17:42:33
Problema Subsecventa de suma maxima Scor 85
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.7 kb
#include <iostream>
#include <fstream>

using namespace std;

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

const int MAXN = 6e6 + 5;
const int INFINIT = (1 << 31);

int sum[MAXN], best[MAXN];

int main() 
{
	int n, nr;
	fin >> n;

	int ans = -INFINIT, minSum = sum[0];
	int startIndex = 0, endIndex = 0;

	for (int i = 1; i <= n; i++)
	{
		fin >> nr;

		sum[i] = sum[i - 1] + nr;
		best[i] = sum[i] - minSum;

		if (minSum > sum[i])
		{
			minSum = sum[i];
			startIndex = i;
		}

		if (best[i] > ans)
		{
			ans = best[i];
			endIndex = i;
		}
	}

	fout << ans << ' ' << startIndex + 1 << ' ' << endIndex;
}

/*
	
	7
	5 -6 3 4 -2 3 -3

	5 -1 2 6  4 7  4 

*/