Cod sursa(job #73879)

Utilizator andrei.12Andrei Parvu andrei.12 Data 21 iulie 2007 14:40:34
Problema Divk Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include<stdio.h>
int ind , i, j, cit, d[500005], a, b, k, n, s, v[500005], x, el;
long long nrs;
int main()
{
	freopen("divk.in","r",stdin);
	freopen("divk.out","w",stdout);
	scanf("%d%d%d%d", &n, &k, &a, &b);
	ind = 1;
	for (i=1; i<=n; i++)
		scanf("%d", &v[i]);
	for (i=1; i<=b; i++){
		s += v[i] % k;
		if (i >= a){
			if (s % k == 0)
				nrs ++;
			d[++d[0]] = s % k;
		}
	}
	for (i=a+1; i<=n; i++){
		el = i-a;
		for (j=1; j<=d[0] && el+a+j-1 <= n; j++){
			x = (d[j]+v[el+a+j-1]%k-v[el]%k) % k;
			if (x < 0)
				x = 5+x;
			d[j] = x;
			if (d[j] == 0)
				nrs ++;
		}
		
	}
	printf("%lld\n", nrs);
	fclose(stdin);
	fclose(stdout);
	return 0;
}