Cod sursa(job #528796)

Utilizator Catah15Catalin Haidau Catah15 Data 3 februarie 2011 14:42:48
Problema Subsecventa de suma maxima Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <fstream>
#include <iostream>
#define MAXN 6000010
#define INF 99999999
using namespace std;

int sum[MAXN], best, a[MAXN], n, bestSum = -INF;

int main()
{
	ifstream f("ssm.in");
	ofstream g("ssm.out");
	
	f >> n;
	
	sum[0] = 0;
	
	for(int i = 1; i <= n; ++i)
	{
		f >> a[i];
		
		sum[i] = sum[i - 1] + a[i];
	}
	
	int min = 0, pozi = 0, pozf = 0;
	
	for(int i = 1; i <= n; ++i)
	{
		int best = sum[i] - min;
		
		if(sum[i] < min)
		{	
			min = sum[i];
			pozi = i;
		}
			
		if(best > bestSum)
		{
			bestSum = best;
			pozf = i;
		}
		
	}
	if(pozi + 1 <= pozf)
	g << bestSum << " " << pozi + 1 << " " << pozf;
	else
		g << bestSum << " " << pozf << " " << pozf;
	f.close();
	g.close();
	
	return 0;
}