Cod sursa(job #196003)

Utilizator nusmaibunkeleviprofesor cicalescu nusmaibunkelevi Data 23 iunie 2008 21:19:27
Problema Divk Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.54 kb
#include<stdio.h>
#define NMAX 500001

int main(){
freopen("divk.in","r",stdin);
freopen("divk.out","w",stdout);
long int  v[NMAX],d;
int n,i,j,nrs=0,k,a,b,x,f;
scanf("%d%d%d%d",&n,&k,&a,&b);
v[0]=0UL;
for(i=1;i<=n;++i){
	scanf("%d",&x);
	if(x>=k) x=x%k;
	v[i]=v[i-1]+x;
	if(v[i]>=k) v[i]=v[i]-k;
	}

for(j=a;j<=b;++j)
	for(i=j;i<=n;++i){
		d=v[i]-v[i-j];
		if(d<0) d=-d;
		if(d==0||d==k) {nrs++;
		  /*	for(f=i-j+1;f<=i;++f)
				printf("%llu ",v[f]-v[f-1]);
			printf("\n");*/
			}
		}


printf("%d",nrs);
return 0;
}