Pagini recente » Cod sursa (job #2747368) | Cod sursa (job #2415126) | Cod sursa (job #1644006) | Cod sursa (job #59844) | Cod sursa (job #1847545)
#include <cstdio>
int resturi[500001];
int f[100001];
int main() {
freopen("divk.in", "r", stdin);
freopen("divk.out", "w", stdout);
int N, k, A, B, x;
scanf("%d %d %d %d", &N, &k, &A, &B);
long long ans = 0LL;
for(int i = 1; i <= N; ++ i) {
scanf("%d", &x);
resturi[i] = (resturi[i - 1] + x) % k;
if(i >= A and i < B) {
++ f[resturi[i - A]];
ans += f[resturi[i]];
}
}
for(int i = B; i <= N; ++ i) {
++ f[resturi[i - A]];
ans += f[resturi[i]];
-- f[resturi[i - B]];
}
printf("%lld\n", ans);
return 0;
}