Pagini recente » Cod sursa (job #1867871) | Cod sursa (job #2094362) | Cod sursa (job #123535) | Cod sursa (job #1486210) | Cod sursa (job #337462)
Cod sursa(job #337462)
#include<cstdio>
#include<vector>
using namespace std;
const int K = (1<<17);
vector<int> v[K];
int n,k,a,b;
void citire()
{
int i,x,s=0;
scanf("%d%d%d%d",&n,&k,&a,&b);
v[0].push_back(0);
for(i=1;i<=n;++i)
{
scanf("%d",&x);
s+=x;
s%=k;
v[s].push_back(i);
}
}
void calcul()
{
long long rez=0;
int i,j,pa,pb;
for(i=0;i<k;++i)
{
pa=pb=0;
n=v[i].size();
for(j=0;j<n;++j)
{
while(pa!=n && v[i][pa]-v[i][j]<a)
++pa;
while(pb!=n && v[i][pb]-v[i][j]<=b)
++pb;
rez+=pb-pa;
}
}
printf("%lld\n",rez);
}
int main()
{
freopen("divk.in","r",stdin);
freopen("divk.out","w",stdout);
citire();
calcul();
return 0;
}