Cod sursa(job #662987)

Utilizator suzanicaSuzanica Mihu suzanica Data 17 ianuarie 2012 17:23:31
Problema Divk Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.47 kb
#include<cstdio>
using namespace std;

int rest[500001], nrRest[500001];
long long nr;

int main()
{
	freopen("divk.in", "r", stdin), freopen("divk.out", "w", stdout);
	int N, K, A, B, i, x;
	scanf("%d %d %d %d", &N, &K, &A, &B);
	
	for (i = 1; i <= N; i++)
	{
		scanf("%d", &x);
		rest[i] = (rest[i-1] + x) % K;
		if (i >= A)
			nrRest[rest[i-A]] ++;
		if (i > B)
			nrRest[rest[i-B-1]]--;
		nr += nrRest[rest[i]];
	}

	printf("%lld", nr);
	return 0;
}