Cod sursa(job #2907675)

Utilizator amcbnCiobanu Andrei Mihai amcbn Data 31 mai 2022 01:10:31
Problema Divk Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.81 kb
/// [A][M][C][B][N] ///
#include <bits/stdc++.h>
using namespace std;
const int mod = 9901, inf = 0x3f3f3f3f;
const char sp = ' ', nl = '\n';
ifstream fin("divk.in");
ofstream fout("divk.out");

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0), cout.tie(0);
    int n, k, a, b;
    fin >> n >> k >> a >> b;
    vector<int> v(n + 1);
    for (int i = 1; i <= n; ++i) {
        fin >> v[i];
        v[i] = (v[i] + v[i - 1]) % k;
    }
    vector<int> cnt(k);
    int st = 0, dr = -1;
    long long ans = 0;
    for (int i = 1; i <= n; ++i) {
        int new_st = max(i - b, -1), new_dr = max(i - a, -1);
        while (st < new_st) {
            cnt[v[st++]]--;
        }
        while (dr < new_dr) {
            cnt[v[++dr]]++;
        }
        ans += cnt[v[i]];
    }
    fout << ans;
}