Cod sursa(job #1126390)

Utilizator negrea.andreiAndrei Negrea negrea.andrei Data 26 februarie 2014 23:00:38
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
# include <fstream>

using namespace std;

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

int n, sume[6000005], maxim, sum, startSecv, endSecv, minim = 0, pozMin = 0, c;

int main()
{
	f >> n;
	for (int i = 1; i <= n; i++)
	{
		int a;
		f >> a;
		sume[i] = sume[i-1] + a;
	}

	maxim = sume[1];
	startSecv = 1;
	endSecv = 1;

	// Facem (sume[i] - minim) si daca minim = 0 consideram ca am putea lua sume[i] ca A[1] + ... + A[i]
	for (int i = 1; i <= n; i++)
	{
		sum = sume[i] - minim;
		if(sum > maxim) 
		{
			maxim = sum;
			endSecv = i;
			startSecv = pozMin + 1;
		}
		else
			if (sum == maxim) 
			{
				if(pozMin + 1 < startSecv) 
				{
				    startSecv =  pozMin + 1;
					endSecv = i;
				}
			}
		if (sume[i] < minim) 
		{
			minim = sume[i];
			pozMin = i;
		}
		}
	g << maxim << " " << startSecv << " " << endSecv;
}