Cod sursa(job #767895)

Utilizator Mihai22eMihai Ionut Enache Mihai22e Data 15 iulie 2012 12:30:57
Problema Subsecventa de suma maxima Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include<stdio.h>

#define NMAX 6000002
#define MIN -999999999
int n, v[ NMAX ], best[ NMAX ], smax = MIN, st, end;

int max(int a, int b)
{
	if(a > b)
		return a;
	return b;
}

void read()
{
	FILE *f = fopen("ssm.in", "r");
	
	fscanf(f, "%d", &n);
	for(int i = 1; i <= n; i++)
		fscanf(f, "%d", &v[i]), s[i] = s[i-1] + v[i];
	
	fclose(f);
}

void solve()
{
	int x = 0;
	
	for(int i = 1; i <= n; i++)
	{
		if(best[i-1] + v[i] > v[i])
			best[i] = best[i-1] + v[i];
		else
			best[i] = v[i], x = i;

		if(best[i] > smax)
			smax = best[i], st = x, end = i;
	}
}

void write()
{
	FILE *g = fopen("ssm.out", "w");
	
	fprintf(g, "%d %d %d\n", smax, st, end);
	
	fclose(g);
}

int main()
{
	read();
	solve();
	write();
	return 0;
}