Cod sursa(job #466393)

Utilizator dornescuvladVlad Eugen Dornescu dornescuvlad Data 26 iunie 2010 15:31:24
Problema Subsecventa de suma maxima Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <iostream>
#include <fstream>

using namespace std;

const char iname[] = "ssm.in";
const char oname[] = "ssm.out";
const int nmax = 6000005;

ifstream fin(iname);
ofstream fout(oname);

int S[nmax], A[nmax], i, j, k, l, bestSum, idx_start, idx_final, minim, N;
int best[nmax];

int main()
{
	fin >> N;
	for(i = 1; i <= N; i ++)
	{
		fin >> A[i];
		S[i] = S[i - 1] + A[i];
	}
	for(i = 1; i <= N; i ++)
	{
		best[i] = S[i] - minim;
		if(minim > S[i])
		{
			minim = S[i];
			idx_start = i + 1;
		}
		if(best[i] > bestSum)
			bestSum = best[i];
	}
	int sum = 0;
	for(i = idx_start ; sum != bestSum; i ++)
		sum = sum + A[i];
	idx_final = i - 1;
	fout << bestSum << " " << idx_start << " " << idx_final;
	return 0;
}