Cod sursa(job #2345003)

Utilizator LittleWhoFeraru Mihail LittleWho Data 15 februarie 2019 19:48:52
Problema Divk Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.58 kb
#include <bits/stdc++.h>

using namespace std;

const int maxn = 500001;
const int maxk = 100001;

int sums[maxn];
int remainders[maxk];
long long sol;
int n, k, a, b;

int main() {
  freopen("divk.in", "r", stdin);
  freopen("divk.out", "w", stdout);

  cin >> n >> k >> a >> b;

  for (int i = 1, x; i <= n; i++) {
    cin >> x;
    sums[i] += sums[i - 1] + x;
  }

  for (int i = 1; i <= n; i++) {
    if (i - b - 1 >= 0) remainders[sums[i - b - 1] % k]--;
    if (i - a >= 0) remainders[sums[i - a] % k]++;
    sol += remainders[sums[i] % k];
  }

  cout << sol << "\n";

  return 0;
}