Cod sursa(job #65682)

Utilizator peanutzAndrei Homorodean peanutz Data 11 iunie 2007 15:19:18
Problema Divk Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 0.54 kb
#include <stdio.h>

#define KMAX 100001
#define NMAX 500009

int n, k, a, b, v[KMAX];
long long s[NMAX];
long long count;

int main()
{
	int i;
	freopen("divk.in", "r", stdin);
	freopen("divk.out", "w", stdout);
	scanf("%d %d %d %d", &n, &a, &b, &k);

	for (i = 1; i <= n; ++i)
	{		
		scanf("%d", s+i);
		s[i] = (s[i-1] + s[i]) % k;
	}

	for (i = 1; i <= a-1; ++i)
         ++v[s[i]];
	for (i = a; i <= n; ++i)
	{	
		++v[s[i-a]];
		count += v[s[i]];
		if (i >= b) ++v[s[i-b]];
	}

	printf("%lld\n", count);

	return 0;
}