Cod sursa(job #1988683)
| Utilizator | Data | 4 iunie 2017 11:14:43 | |
|---|---|---|---|
| Problema | Divk | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.55 kb |
#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;
}