Cod sursa(job #478761)

Utilizator a.stanciuStanciu Adrian a.stanciu Data 20 august 2010 12:12:33
Problema Subsecventa de suma maxima Scor 95
Compilator c Status done
Runda Arhiva educationala Marime 0.74 kb
#include <stdio.h>
#include <stdlib.h>

#define N 6000000

int v[N];

int ssm(int n, int *start, int *stop)
{
	int i, s = v[0], max = v[0], ok = 0, aux;
	*start = 0, *stop = 0;
	for (i = 1; i < n; i++)
	{
		aux = max + v[i];
		if (aux > v[i])
			max = aux;
		else
		{
			max  = v[i];
			ok = i;
			while (v[ok - 1] == 0) ok--;
		}
		if (max > s)
		{
			s = max;
			*stop = i;
			*start = ok;
		}
	}
	return s;
}

int main()
{
	int n, i, r, start, stop;
	FILE *f, *g;

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

	fscanf(f, "%d", &n);
	
	//v = (int *)malloc(sizeof(int) * n);
	
	for (i = 0; i < n; i++)
		fscanf(f, "%d", &v[i]);

	r = ssm(n, &start, &stop);

	fprintf(g, "%d %d %d\n", r, start + 1, stop + 1);

	fclose(f);
	fclose(g);

	return 0;
}