Cod sursa(job #1847538)

Utilizator tudorcomanTudor Coman tudorcoman Data 14 ianuarie 2017 18:26:45
Problema Divk Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.63 kb

#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);

  for(int i = 1; i <= N; ++ i) {
    scanf("%d", &x);
    resturi[i] = (resturi[i - 1] + x) % k;

  }

  f[0] = 1;
  for(int i = 1; i <= B - A; ++ i)
    ++ f[resturi[i]];

  int ans = 0;
  for(int i = A; i <= B; ++ i)
    ans += f[resturi[i]];

  for(int i = B + 1; i <= N; ++ i) {
    ans += f[resturi[i]];
    -- f[resturi[i - B - 1]];
    ++ f[resturi[i - A]];
  }

  printf("%d\n", ans);
  return 0;
}