Pagini recente » Cod sursa (job #1182846) | Cod sursa (job #2615997) | Cod sursa (job #2276804) | Cod sursa (job #717223) | Cod sursa (job #29326)
Cod sursa(job #29326)
#include<stdio.h>
#define nmax 1000
int long sol, p[nmax][nmax],v[nmax],n,k,a,b;
void citire();
void afisare();
void rest();
void rezolva();
int main()
{citire();
rest();
rezolva();
afisare();
return 0;
}
void afisare()
{freopen("divk.out","w",stdout);
printf("%ld",sol);
fclose(stdout);
}
void citire()
{int long a,i;
freopen("divk.in","r",stdin);
scanf("%ld%ld%ld%ld",&n,&k,&a,&b);
for(i=1;i<=n;i++)
{scanf("%ld",&a);
v[i]=a+v[i-1];
}
}
void rest()
{int long i;
for(i=1;i<=n;i++)
p[v[i]%k][++p[v[i]%k][0]]=i;
}
void rezolva()
{int long i,nr=0,j,ls,lj;
for(i=0;i<k;i++)
{j=2;
while(j<=p[i][0]&&p[i][j]-p[i][1]<a) j++;
for(j,lj=ls=1;j<=p[i][0];j++)
{while(p[i][j]-ls>b) ls++;
while(p[i][j]-lj<a) lj++;
nr+=ls-lj+1;
}
}
sol=nr;
}