Cod sursa(job #3278890)

Utilizator inacioataCioata Ana Irina inacioata Data 21 februarie 2025 11:08:56
Problema Divk Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.63 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("divk.in");
ofstream fout("divk.out");
int n, a[500005], s[500005], k;

///nr de secvente de lungime cel mult L cu suma % k == 0
long long F(int L)
{
    int i, fr[100001] = {0};
    long long cnt = 0;
    fr[0] = 1; s[0] = 0;
    for(i = 1; i <= n; i++)
    {
        s[i] = (s[i - 1] + a[i]) % k;
        if(i > L) fr[s[i - L - 1]]--;
        cnt += fr[s[i]];
        fr[s[i]]++;
    }
    return cnt;
}

int main()
{
    int i, A, B;
    fin >> n >> k >> A >> B;
    for(i = 1; i <= n; i++)
        fin >> a[i];
    fout << F(B) - F(A - 1);
    return 0;
}