Cod sursa(job #24244)

Utilizator beliver_XSoare Sorin Horatiu beliver_X Data 1 martie 2007 22:45:23
Problema Secventa 2 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include<stdio.h>
#include<values.h>
#include<alloc.h>
#define NMAX 25000
void CitFis(int *v,long int &n,long int &k)
{FILE *f;
f=fopen("secv2.in","r");
fscanf(f,"%ld %ld",&n,&k);
for(long int i=1;i<=n;i++)
fscanf(f,"%d",&v[i]);
}
void Secv(long int n,long int k,int *v)
{long int i,j,S=-MAXLONG,s2;
 long int poz,Lungant=0,l,k1;
FILE *f;
f=fopen("secv2.out","w");
for(i=1;i<=n;i++)
{
      for(k1=1;k1<=n;k1++)
      {s2=0;
      for(j=i;j<i+k1&&((i+k1)<=n);j++)
	{s2=s2+v[j];}
	if((i+k1)>n)s2=-MAXLONG;
  if(s2>=0)
      {if(s2>S&&k1>=k){S=s2;poz=i;Lungant=k1;}}
      else if(-s2<-S&&k1>=k){S=s2;poz=i;Lungant=k1;}
	}
}
if(n!=k)fprintf(f,"%ld %ld %ld",poz,poz+Lungant-1,S);
  else {s2=0;
	for(i=1;i<=n;i++)s2+=v[i];
	fprintf(f,"1 %ld %ld",n,s2);}
fclose(f);
}
int main()
{long int n,k;
int *v;
v=(int *)calloc(NMAX,sizeof(int));
CitFis(v,n,k);
Secv(n,k,v);
return 0;}