Cod sursa(job #412842)

Utilizator petreanuandiPetreanu Adelin Andrei petreanuandi Data 6 martie 2010 16:53:20
Problema Subsecventa de suma maxima Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 0.84 kb
#include<stdio.h>
#include<stdlib.h>
void ssm(int n,int *v,int *sum)
{
	sum[-1]=0;
	int i,min=sum[-1];
	for(i=0;i<n;i++)
		sum[i]=v[i]+sum[i-1];
		
	int bests=-1000,*best;
	best=(int*)malloc(n*sizeof(int));
	int poz2,length=0,poz1;
	for(i=0;i<n;i++)
			{	length++;
				best[i]=sum[i]-min;
				if(min>sum[i]) min=sum[i];
				if(bests<best[i]) {bests=best[i];
									poz2=i;poz1=length;length=0;
								}
			}
	FILE *g=fopen("ssm.out","w");
	fprintf(g,"%d %d %d",bests,poz1+1,poz2+1);
	fclose(g);
}					

int main(int argc,char **argv)
{
/*	if(argc<2)
	{
		fprintf(stderr,"nu ai argumente");
		exit(1);
		}*/
	FILE *f=fopen("ssm.in","r");
	int n,*v,i,*sum;
	
	fscanf(f,"%d",&n);
	v=(int*)malloc(n*sizeof(int));
	for(i=0;i<n;i++)
		fscanf(f,"%d",&v[i]);
	sum=(int*)malloc(n*sizeof(int));
	ssm(n,v,sum);
	
//	for(i=0;i<n;i++)
//			printf("%d ",v[i]);
	return 0;
}