Cod sursa(job #483075)

Utilizator crushackPopescu Silviu crushack Data 6 septembrie 2010 21:21:10
Problema Divk Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.58 kb
#include <stdio.h>
#define NMax 5000000
#define KMax 1000000

const char IN[]   ="divk.in";
const char OUT[]  ="divk.out";

int start,end,N,K,A,B;
int a[NMax+10];
int S[NMax+10],c[KMax+10];


int main()
{
	int i,s,Rez;
	freopen(IN,"r",stdin);
	freopen(OUT,"w",stdout);
	scanf("%d%d%d%d",&N,&K,&A,&B);B++;
	start=0;end=-1;
	s=Rez=0;
	for (i=1;i<=N;i++)
	{
		scanf("%d",&a[i]);
		S[i] = (S[i-1]+a[i])%K;
	}
	for (i=A;i<=N;i++)
	{
		c[ S[i-A] ]++;
		if (i>=B) c[S[i-B]]--;
		Rez+= c[S[i]];
	}
	printf("%d\n",Rez);
	fclose(stdin);
	fclose(stdout);
	return 0;
}