Cod sursa(job #1147637)

Utilizator SilverGSilver Gains SilverG Data 19 martie 2014 23:58:26
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
/*
    Keep It Simple!
*/

#ifdef _MSC_VER
#define _CRT_SECURE_NO_WARNINGS
#endif

#include<stdio.h>
#include<list>
#include<stack>

#define MaxN 6000001

using namespace std;

int N, v[MaxN];
int best, startbest, endbest;
int current, startcurrent;
int main()
{
	freopen("ssm.in", "r", stdin);
	freopen("ssm.out", "w", stdout);

	scanf("%d", &N);

	for (int i = 1; i <= N; i++)
		scanf("%d", &v[i]);

	current = best =  -(1<<30);
	for (int i = 1; i <= N; i++)
	{
		if (current +v[i] < v[i])
		{
			current = v[i];
			startcurrent = i;
		}
		else current += v[i];

		if (current > best)
		{
			best = current; startbest = startcurrent; endbest = i;
		}
	}

	printf("%d %d %d", best, startbest, endbest);
	return 0;
}