Cod sursa(job #3880)

Utilizator megabyteBarsan Paul megabyte Data 29 decembrie 2006 11:41:11
Problema Divk Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.62 kb
#include <stdio.h>
#define INF "divk.in"
#define OUF "divk.out"
#define NMAX 500001
int main()
{
	unsigned long i,t,a[NMAX],li,ls,n,sum=0;
	register unsigned long j,f,s,k;
	unsigned long long nr=0;
	FILE *in,*out;
	in=fopen(INF,"r");
	out=fopen(OUF,"w");
	fscanf(in,"%ld%ld%ld%ld",&n,&k,&li,&ls);
	for(i=1;i<=n;i++)
	{
	  fscanf(in,"%ld",&f);
	  a[i]=f%k;
	}
	for(i=1;i<li;i++) sum+=a[i];
	for(i=li;i<=n;i++)
	{
	  f=i+ls-li;
	  sum+=a[i]-a[i-li];
   	  s=sum;
	  if(f>n) f=n;
	  if(s%k==0&&s>0) nr++;
	  for(j=i+1;j<=f;j++)
	  {  
		  s+=a[j];
		  if(s%k==0&&s>0) nr++;
	  }
	}
	fprintf(out,"%lld",nr);
	fclose(in);fclose(out);
}