Cod sursa(job #3303490)

Utilizator Andrei-Dani-10Pisla Andrei Daniel Andrei-Dani-10 Data 15 iulie 2025 21:29:30
Problema Divk Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <fstream>
#include <vector>

using namespace std;

ifstream in("divk.in");
ofstream out("divk.out");

const int nmax = 5 * 1e5, kmax = 1e5;
int n, k, lf, rg;
int64_t secv, a[nmax + 2];

int freq[kmax + 2];
int64_t solve(int length){
    for(int i = 0; i <= k; i++)
        freq[i] = 0;

    int64_t ways = 0;
    for(int i = 1; i <= n; i++){
        ways += freq[a[i] % k];
        if(i - length + 1 >= length)
            freq[a[i - length + 1] % k]--;
        freq[a[i] % k]++;
    }

    return ways;
}

int main(){

    in>>n>>k>>lf>>rg;
    for(int i = 1; i <= n; i++)
        in>>a[i], a[i] %= k, a[i] += a[i - 1];

    secv = solve(rg) - solve(lf - 1);

    out<<secv<<"\n";

    return 0;
}