Cod sursa(job #973308)

Utilizator the_chosen_oneCristian Badea the_chosen_one Data 13 iulie 2013 23:33:51
Problema Subsecventa de suma maxima Scor 85
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
//Se cere sa se determine subsecventa de suma maxima.
#include<stdio.h>
int v[6000001];
int main()
{
	FILE *Fin,*Fout;
	Fin=fopen("ssm.in","r");
	Fout=fopen("ssm.out","w");
	int n,inceput=0,sfarsit=0,j=0,si=0,sj=0,suma=-2147483647,min=0,i;
	fscanf(Fin,"%d",&n);
	for(i=1;i<=n;++i)
		fscanf(Fin,"%d",&v[i]);
	for(i=1;i<=n+1;++i){
		si+=v[i];
		if(si-min==suma && sfarsit-inceput<i-j-1)
		{
			sfarsit=i;
			inceput=j+1;
		}
		if(si-min>suma){
			suma=si-min;
			sfarsit=i;
			inceput=j+1;
		}
		sj+=v[i-1];
		if(min>sj){
			min=sj;
			j=i-1;
		}
	}
	fprintf(Fout,"%d %d %d",suma,inceput,sfarsit);
	fclose(Fin);
	fclose(Fout);
	return 0;
}