Pagini recente » Cod sursa (job #2377558) | Cod sursa (job #3175457) | Cod sursa (job #1116243) | Cod sursa (job #489194) | Cod sursa (job #1721211)
#include <bits/stdc++.h>
using namespace std;
vector<int> v[100005];
int main(void) {
freopen("divk.in", "r", stdin);
freopen("divk.out", "w", stdout);
int n, k, a, b, t, st, dr;
long long ans;
ans = 0LL;
v[0].push_back(-1);
scanf("%d%d%d%d",&n,&k,&a,&b);
for(int i=0, s=0; i<n; ++i) {
scanf("%d",&t);
s+=t;
s%=k;
st = -1;
dr = -1;
for(int m=1<<20; m; m>>=1)
if(st+m<v[s].size() && i-v[s][st+m]<a)
st+=m;
for(int m=1<<20; m; m>>=1)
if(dr+m<v[s].size() && i-v[s][dr+m]<b)
dr+=m;
v[s].push_back(i);
ans+=dr-st;
}
printf("%lld\n",ans);
fclose(stdin);
fclose(stdout);
return 0;
}