Cod sursa(job #1231656)

Utilizator daniel.amarieiDaniel Amariei daniel.amariei Data 21 septembrie 2014 12:02:58
Problema Subsecventa de suma maxima Scor 65
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 kb
#include <fstream>
#define SIZE 6000000
using namespace std;

int V[SIZE];

int main()
{
	ifstream ifs("ssm.in");
	ofstream ofs("ssm.out");
	
	int n; ifs >> n;
	for (int i = 0; i < n; ++i)
		ifs >> V[i];
		
	int best_sum = V[0], best_left = 0, best_right = 0;
	int sum = V[0], left = 0;
	
	for (int i = 1; i < n; ++i)
	{
		sum += V[i];
		
		if (sum < 0) 
		{
			sum = V[i];
			left = i;
		}

		if (sum > best_sum)
		{
			best_sum = sum;
			best_left = (best_left == left ? best_left : left);
			best_right = i;
		}
	}
	
	ofs << best_sum << " " << best_left + 1 << " " << best_right + 1 << "\n";
	
	return 0;
}