Cod sursa(job #65646)

Utilizator peanutzAndrei Homorodean peanutz Data 11 iunie 2007 12:15:10
Problema Divk Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <stdio.h>
#define NMAX 500020

int n, k, a, b;
int s[NMAX];
int count;
int r[NMAX/5];

void read()
{
	int i;
	scanf("%d %d %d %d", &n, &k, &a, &b);
	for(i = 1; i <= n; ++i)
		scanf("%d", s+i), s[i] += s[i-1];
}

void solve()
{
	int i;
	for(i = 1; i <= b+1; ++i)
		++r[s[i] % k];
	for(i = b+1; i <= n; ++i)
	{
		count += r[s[i] % k];

		--r[s[i-b+1] % k];
		++r[s[i-a+2] % k];
	}
}


int main()
{
	freopen("divk.in", "r", stdin);
	freopen("divk.out", "w", stdout);

	read();
	
	solve();

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

	fclose(stdin);
	fclose(stdout);

	return 0;
}