Cod sursa(job #1988683)

Utilizator DruffbaumPopescu Vlad Druffbaum 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;
}