Cod sursa(job #249446)

Utilizator ProstuStefan-Alexandru Filip Prostu Data 28 ianuarie 2009 14:58:37
Problema Divk Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.5 kb
#include <stdio.h>
#define NMAX 500001
#define KMAX 100000
int N,K,A,B;
long long sum[NMAX];
int nr[KMAX];
long long num;

int main()
{
	FILE *fin=fopen("divk.in","rt");
	FILE *fout=fopen("divk.out","wt");
	fscanf(fin,"%d%d%d%d",&N,&K,&A,&B);
	int i,aux;
	for (i=1;i<=N;++i)
	{
		fscanf(fin,"%d",&aux);
		sum[i]=sum[i-1]+aux;
		if (i-A>=0) ++nr[sum[i-A]%K];
		num+=nr[sum[i]%K];
		if (i-B>=0) --nr[sum[i-B]%K];
	}
	fprintf(fout,"%lld\n",num);
	fclose(fin);
	fclose(fout);
	return 0;
}