Cod sursa(job #3348270)

Utilizator rapidu36Victor Manz rapidu36 Data 20 martie 2026 14:45:29
Problema Divk Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <fstream>

using namespace std;

const int N = 5e5;
const int K = 1e5;

int s[N+1], n, k;
int nr_pref[K];

long long nr_secv_valide(int lung)
{
    ///nr. secventelor valide de lungime <= lung
    long long nr_secv = 0;
    nr_pref[0] = 1;
    for (int j = 1; j < k; j++)
    {
        nr_pref[j] = 0;
    }
    for (int i = 1; i <= n; i++)
    {
        if (i >= lung)
        {
            nr_pref[s[i-lung]]--;
        }
        nr_secv += nr_pref[s[i]];
        nr_pref[s[i]]++;
    }
    return nr_secv;
}

int main()
{
    ifstream in("divk.in");
    ofstream out("divk.out");
    int a, b;
    in >> n >> k >> a >> b;
    for (int i = 1; i <= n; i++)
    {
        int x_i;
        in >> x_i;
        s[i] = (s[i-1] + x_i) % k;
    }
    in.close();
    out << nr_secv_valide(b) - nr_secv_valide(a - 1) << "\n";
    out.close();
    return 0;
}