Cod sursa(job #3314772)

Utilizator AndreiEsteNebunAndrei Mateescu AndreiEsteNebun Data 11 octombrie 2025 09:09:33
Problema Divk Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.65 kb
#include <iostream>
#include <fstream>
#include <cstring>
#define int long long

using namespace std;

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

const int NMAX = 500000;
const int KMAX = 100000;

int v[NMAX + 5];
int sp[NMAX + 5];
int fr[KMAX + 5];

signed main()
{
    int n,k,a,b;
    fin>>n>>k>>a>>b;
    if(b<a)
        swap(a,b);

    int ans = 0;

    for(int i=1;i<=n;i++)
    {
        fin>>v[i];
        sp[i] = (sp[i-1] + v[i]) % k;
    }

    for(int i=a;i<=n;i++)
    {
        fr[sp[i-a]]++;
        if(i>b)
            fr[sp[i-b-1]]--;
        ans+=fr[sp[i]];
    }
    fout<<ans;
    return 0;
}