Pagini recente » Cod sursa (job #1357152) | Cod sursa (job #1590497) | Cod sursa (job #1968681) | Cod sursa (job #866035) | Cod sursa (job #581771)
Cod sursa(job #581771)
# include <stdio.h>
long long n, K, A, B, lung, sol, i, cit;
long long v[500010], ap[100010];
bool bs (long long st, long long dr, long long find){
long long i, cnt = 1 << 30;
for (i = st; cnt > 0; cnt = cnt >> 1)
if (i + cnt <= dr){
if (v[i + cnt] <= find){
i += cnt;
}
}
if (v[i] == find) return true;
return false;
}
long long maxim (long long a, long long b){
if (a > b) return a;
return b;
}
int main (){
freopen ("divk.in", "r", stdin);
freopen ("divk.out", "w", stdout);
scanf ("%lld%lld%lld%lld", &n, &K, &A, &B);
for (i = 1; i <= n; ++i){
scanf ("%lld", &cit);
v[i] = (v[i - 1] + cit) % K;
}
//ap[0] = 1;
for (i = 1; i <= n; ++i){
if (i - A >= 0)
++ap[v[i - A]];
if (i - B > 0){
if (i - B == 1) --ap[0];
--ap[v[i - B]];
}
sol = sol + ap[v[i]];
}
printf ("%lld\n", sol);
return 0;
}