Pagini recente » Borderou de evaluare (job #2129117) | Borderou de evaluare (job #963528) | Borderou de evaluare (job #957679) | Borderou de evaluare (job #2814897) | Cod sursa (job #1988683)
#include <cstdio>
const int MAXN = 5e5;
const int MAXK = 1e5;
int v[MAXN],
r[MAXK];
int main() {
int n, k, a, b, x;
long long ans;
FILE *f = fopen("divk.in", "r");
fscanf(f, "%d%d%d%d", &n, &k, &a, &b);
ans = 0LL;
for (int i = 1; i <= n; ++i) {
fscanf(f, "%d", &x);
v[i] = (v[i - 1] + x) % k;
if (i >= a) {
++r[v[i - a]];
}
ans += 1LL * r[v[i]];
if (i >= b) {
--r[v[i - b]];
}
}
fclose(f);
f = fopen("divk.out", "w");
fprintf(f, "%lld\n", ans);
fclose(f);
return 0;
}