Cod sursa(job #972530)

Utilizator antonioteoZait Teodor Antonio antonioteo Data 11 iulie 2013 23:01:57
Problema Divk Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.49 kb
#include <cstdio>
using namespace std;

#define NMAX 500001

int i, N, K, A, B;
int x;
int Sum[NMAX];
long long Freq[NMAX];
long long ANS;

int main() {
	freopen("divk.in","r",stdin);
	freopen("divk.out","w",stdout);
	scanf("%i%i%i%i", &N, &K, &A, &B);
	for (i = 1; i <= N; ++i) {
		scanf("%i", &x);
		Sum[i] = (Sum[i - 1] + x) % K;
		if (i >= A)
			++Freq[Sum[i - A]];
		if (i > B)
			--Freq[Sum[i - B - 1]];
		ANS += Freq[Sum[i]];
	}
	printf("%lld\n", ANS);
	return 0;
}