Cod sursa(job #790627)

Utilizator vld7Campeanu Vlad vld7 Data 21 septembrie 2012 23:01:29
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include <cstdio>

#define maxN 6000005

using namespace std;

FILE *f = fopen ("ssm.in","r");
FILE *g = fopen ("ssm.out","w");

int n, a[maxN], sum, begin, end;

void read()
{
	fscanf (f, "%d", &n);
	for (int i = 1; i <= n; i++)
		fscanf (f, "%d", &a[i]);
}

void solve()
{
	int currentSum, inc;	
	sum = currentSum = a[1];
	begin = end = 1;
	
	for (int i = 2; i <= n; i++) {
		if (currentSum < 0) {
			currentSum = a[i];
			inc = i;
		}
		else
			currentSum += a[i];
		
		if (currentSum > sum) {
			sum = currentSum;
			begin = inc;
			end = i;
		}
	}
}

int main()
{
	read();
	solve();
	
	fprintf (g, "%d %d %d\n", sum, begin, end);
	
	fclose(f);
	fclose(g);
	
	return 0;
}