Pagini recente » Cod sursa (job #2811086) | Cod sursa (job #1107661) | Cod sursa (job #64315) | Cod sursa (job #1869343) | Cod sursa (job #1747308)
#include <bits/stdc++.h>
using namespace std;
int p1,p2,s,k,x,a,b,n,lu,i;
long long ans;
vector<int> rest[100010];
int main()
{
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)
{
scanf("%d",&x);
s+=x;
s%=k;
rest[s].push_back(i);
}
for(i=0; i<k; ++i)
{
lu=rest[i].size();
if(!lu)continue;
p1=0;
p2=0;
while(p1<lu)
{
while(p2<lu-1&&(rest[i][p2]-rest[i][p1]<=b||rest[i][p2]-rest[i][p1]<a))++p2;
if(rest[i][p2]-rest[i][p1]<=b&&rest[i][p2]-rest[i][p1]>=a)++ans;
if(i==0&&rest[i][p1]>=a&&rest[i][p1]<=b)++ans;
++p1;
}
}
printf("%lld\n",ans);
return 0;
}