Cod sursa(job #914860)

Utilizator m3rikPaul Urziceanu m3rik Data 14 martie 2013 15:25:30
Problema Subsecventa de suma maxima Scor 95
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
/*
 * ssm.cpp
 * Subsecventa de suma maxima
 *
 *  Created on: Mar 14, 2013
 *      Author: Paulichesh
 */

#include <iostream>
#include <fstream>
#include <algorithm>

using namespace std;

int *v,n;

int main()
{
	ifstream fin ("ssm.in");
	ofstream fout ("ssm.out");
	fin >> n;
	v = new int[n];
	//seq = new int[n];
	for (int i = 0; i < n; i++) {
		fin >> v[i];
	}
	int sum = v[0],best = v[0],st=0,dr=0,st_prim =0,dr_prim=0;
	for(int i=1; i<n; i++)
	{
		if(sum + v[i] >= v[i])
		{
			sum += v[i];
			dr_prim = i;
		}
		else
		{
			sum = v[i];
			st_prim = i;
		}
		if(best < sum)
		{
			best = sum;
			st = st_prim;
			dr = dr_prim;
		}
		else if(best == sum && dr - st > dr_prim - st_prim)
		{
			st = st_prim;
			dr = dr_prim;
		}
	}

	fout << best<< " ";
	//cout << best<< " ";

	fout << st + 1 << " " << dr + 1 << endl;
	//cout << st + 1 << " " << dr + 1 << endl;

	fin.close();
	fout.close();

	return 0;
}