Cod sursa(job #1231675)

Utilizator daniel.amarieiDaniel Amariei daniel.amariei Data 21 septembrie 2014 12:38:58
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 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)
	{
		if (sum + V[i] > 0)
		{
			if (sum + V[i] >= V[i])
			{
				sum += V[i];
			}
			else 
			{
				sum = V[i];
				left = i;
			}
					
		} 
		else
		{
			sum = V[i];
			left = i;
		}

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