Pagini recente » Cod sursa (job #1864110) | Diferente pentru implica-te/extinde-arhiva/autor-necunoscut intre reviziile 11 si 7 | Cod sursa (job #1681443) | Cod sursa (job #251285) | Cod sursa (job #1777183)
#include<bits/stdc++.h>
using namespace std;
int n,k;
int v[500005],a,b,x,sum[500005],s,sol,d,frecv[100005],a1,b1,rest;
int main()
{
freopen("divk.in","r",stdin);
freopen("divk.out","w",stdout);
scanf("%d%d%d%d",&n,&k,&a,&b);
for(int i=1;i<=n;i++)
{
scanf("%d",&x);
v[i]=x%k;
}
for(int i=1;i<=n;i++)
{
sum[i]=(sum[i-1]+v[i])%k;
}
for(int i=a;i<=b;i++)
{
if(!sum[i]) sol++;
}
d=b-a+1;
for(int i=1;i<=d;i++)
{
frecv[sum[i]]++;
}
a1=1;
b1=d;
for(int i=(b+1);i<=n;i++)
{
x=sum[i]%k;
sol=sol+frecv[x];
b1++;
frecv[sum[b1]]++;
frecv[sum[a1]]--;
a1++;
}
printf("%d\n",sol);
}