Cod sursa(job #73861)

Utilizator andrei.12Andrei Parvu andrei.12 Data 21 iulie 2007 13:31:35
Problema Divk Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include<stdio.h>
int ind , i, j, cit, d[500005], a, b, k, n, s;
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", &cit);
		/*
		if (ind < a)
			s+=cit;
		else
			if (ind <= b){
				s += cit;
				if (s % k == 0)
					nrs ++;
				for (j=1; j<=d[0]; j++)
					if ((s-d[j]) % k == 0)
						nrs ++;
				d[++d[0]] = s;
			}
			else{
				s = 0;
				d[0] = 0;
				ind = 1;
			}
		ind ++;
		*/
		s += (cit % k);
		if (i >= a){
			if (i <= b)
				if (s % k == 0)
					nrs ++;
			for (j=1; j<=d[0]; j++)
				if (i-j >= a){
					if (i-j <=b)
						if ((s-d[j]) % k == 0)
							nrs ++;
				}
				else
					break;
		}
		d[++d[0]] = s % k;
	}
	printf("%lld\n", nrs);
	fclose(stdin);
	fclose(stdout);
	return 0;
}