Cod sursa(job #196019)

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

int main(){
freopen("divk.in","r",stdin);
freopen("divk.out","w",stdout);
int  v[NMAX],d;
int n,i,j,nrs=0,k,a,b,nb,c,cc,x;
scanf("%d%d%d%d",&n,&k,&a,&b);
v[0]=0;
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;
	}
c=n-a;
cc=n-b;
for(i=0;i<=c;++i){
	if(v[i]) d=k-v[i];
	else d=0;
	if(i<=cc) nb=i+b;
	else nb=n;
	for(j=i+a;j<=nb;++j){
		if(v[j]==d||v[j]==v[i])
			nrs++;
		}
	}

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