Cod sursa(job #3941)

Utilizator megabyteBarsan Paul megabyte Data 29 decembrie 2006 17:46:33
Problema Divk Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <stdio.h>
#define INF "divk.in"
#define OUF "divk.out"
#define NMAX 500001
#define RMAX 131072
int main()
{
	unsigned long t,a[NMAX],r[RMAX]={0},li,ls,n;
	register unsigned long i,f,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);
	a[0]=0;
	for(i=1;i<=n;i++)
	{
	  fscanf(in,"%ld",&f);
	  a[i]=(a[i-1]+f)%k;
	}
	//for(i=1;i<=n;i++) fprintf(out,"%ld ",a[i]);
	//fprintf(out,"\n");
	for(i=1;i<=n;i++)
	{
		nr+=r[a[i]];
		if(i>=ls) r[a[i-ls+1]]--;
		if(i-li+1<n) r[a[i-li+2]]++;
		//for(t=0;t<8;t++) fprintf(out,"%ld ",r[t]);
                //fprintf(out,"%lld\n",nr);
	}
	fprintf(out,"%lld",nr);
	fclose(in);fclose(out);
}