Cod sursa(job #1205564)

Utilizator gabriel.badeaGabriel Badea gabriel.badea Data 7 iulie 2014 13:13:45
Problema Subsecventa de suma maxima Scor 95
Compilator cpp Status done
Runda Arhiva educationala Marime 0.98 kb
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<stdio.h>
using namespace std;

int nr, indice_start_intermediar, indice_final_intermediar, indice_start, indice_final;
int sir[6000009], best[6000009];
long long suma_maxima;

int main()
{
	freopen("ssm.in", "r", stdin);
	freopen("ssm.out", "w", stdout);

	scanf("%d", &nr);

	for(int i = 0; i < nr; ++i)
	{
		scanf("%d", &sir[i]);
	}

	best[0] = sir[0];

	indice_start = 0;
	indice_final = 0;
	suma_maxima = sir[0];

	for(int i = 1; i < nr; ++i)
	{
		if(sir[i] < best[i-1] + sir[i])
		{
			best[i] = best[i-1] + sir[i];
			indice_final_intermediar = i;		
		}
		else
		{
			best[i] = sir[i];
			// resetam
			indice_start_intermediar = i;
			indice_final_intermediar = i;
		}

		if(best[i] > suma_maxima)
		{
			suma_maxima = best[i];
			indice_final = i;
			indice_start = indice_start_intermediar;
		}
	}

	printf("%lld %d %d\n", suma_maxima, indice_start+1, indice_final+1);

	return 0;
}