Cod sursa(job #151072)

Utilizator RockManIzsak Istvan RockMan Data 7 martie 2008 19:44:29
Problema Secventa 2 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.22 kb
#include<stdio.h>
#include<malloc.h>
#define fin "secv2.in"
#define fout "secv2.out"

const int NMax=50001;

int N,K,Secv[NMax];
int RezInceput,RezSfarsit;

long RezSuma = 0;

void indata()
{
	FILE *f=fopen(fin,"r");
	fscanf(f,"%d%d",&N,&K);
	for(int i = 1; i <= N; i++)
		fscanf(f,"%d",Secv + i);
	fclose(f);
}
void solve()
{
	int *SecvTemp, SumTemp, InceputTemp, SfarsitTemp, SumTempMax, InceputTempMax, SfarsitTempMax, NSecvTemp;
	SumTemp = 0;
	for(int i = 1; i <= N; i++)
	{
		NSecvTemp = N - i + 1;
		SecvTemp = (int *) malloc (NSecvTemp * sizeof(int));
		InceputTemp = i;
		SecvTemp [i] = Secv [i];
		for(int j = i+1; j <= N; j++)
		{
			SecvTemp [j] = SecvTemp [j-1] + Secv [j];
			if(SecvTemp [j] > SumTemp)
			{
				SumTemp = SecvTemp [j];
				SfarsitTemp = j;
			}
		}
		if(SumTemp > SumTempMax)
		{
			SumTempMax = SumTemp;
			InceputTempMax = InceputTemp;
			SfarsitTempMax = SfarsitTemp;
		}
		SecvTemp = NULL;
	}
	RezSuma = SumTempMax;
	RezInceput = InceputTempMax;
	RezSfarsit = SfarsitTempMax;
}
void outdata()
{
	FILE *f=fopen(fout,"w");
	fprintf(f,"%d %d %ld", RezInceput, RezSfarsit, RezSuma);
	fclose(f);
}
int main()
{
	indata();
	solve();
	outdata();
	return 0;
}