Cod sursa(job #677044)

Utilizator Catah15Catalin Haidau Catah15 Data 9 februarie 2012 20:11:30
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda sim_2 Marime 0.7 kb
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>

using namespace std;

#define maxN 6000005
#define inf (1 << 30)

int v[maxN];

int main()
{
	freopen ("ssm.in", "r", stdin);
	freopen ("ssm.out", "w", stdout);
	
	int N;
	
	scanf ("%d", &N);
	
	int minim = 0, maxim = - inf;
	int pozi = 0, pozf = 0;
	int pozmin = 0;
	
	for (int i = 1; i <= N; ++ i)
	{
		int a;
		
		scanf ("%d", &a);
		
		v[i] = v[i - 1] + a;
		
		if (v[i] - minim > maxim)
		{
			maxim = v[i] - minim;
			pozi = pozmin + 1;
			pozf = i;
		}
		
		if (v[i] < minim)
		{
			minim = v[i];
			pozmin = i;
		}
	}
	
	printf ("%d %d %d", maxim, pozi, pozf);
	
	return 0;
}