Cod sursa(job #3314334)

Utilizator risxdrzBanica Albert risxdrz Data 9 octombrie 2025 16:02:46
Problema Divk Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <bits/stdc++.h>
using namespace std;
int main() {
    ifstream fin("divk.in");
    ofstream fout("divk.out");

    long long N;
    int K, A, B;
    fin >> N >> K >> A >> B;

    vector<long long> a(N + 1);
    for (long long i = 1; i <= N; ++i) fin >> a[i];

    vector<int> sp(N + 1);
    long long sum = 0;
    sp[0] = 0;
    for (long long i = 1; i <= N; ++i) {
        sum += a[i];
        sp[i] = int(sum % K);
        if (sp[i] < 0) sp[i] += K;
    }

    vector<long long> freq(K, 0);
    long long ans = 0;

    for (long long i = 1; i <= N; ++i) {
        long long j_add = i - A;
        if (j_add >= 0) freq[ sp[j_add] ]++;
        long long j_rem = i - B - 1;
        if (j_rem >= 0) freq[ sp[j_rem] ]--;
        ans += freq[ sp[i] ];
    }

    fout << ans << "\n";
    return 0;
}