Pagini recente » Cod sursa (job #2117605) | Cod sursa (job #2084922) | Cod sursa (job #2177522) | Cod sursa (job #2629370) | Cod sursa (job #1673778)
#include <cstdio>
# define DIM 5000000
using namespace std;
int nr,n,k,a,b,x,rest[500005],i,j,sol[100005];
long long soltot;
int poz=0;
char buff[DIM];
void citire(int &numar)
{
numar=0;
while(buff[poz]<'0'||buff[poz]>'9')
if(++poz==DIM)
fread(buff,1,DIM,stdin),poz=0;
while('0'<=buff[poz]&&buff[poz]<='9')
{
numar=numar*10+buff[poz]-'0';
if(buff[++poz]==DIM)
fread(buff,1,DIM,stdin),poz=0;
}
}
int main(void)
{
freopen("divk.in","r",stdin);
freopen("divk.out","w",stdout);
scanf("%d%d%d%d",&n,&k,&a,&b);
for(i=1;i<=n;i++)
{
citire(x);
rest[i]=(rest[i-1]+x)%k;
}
for(i=a;i<=n;i++)
{ sol[rest[i-a]]++;
soltot+=sol[rest[i]];
if(i>=b)
sol[rest[i-b]]--;
}
printf("%lld",soltot);
return 0;
}