Cod sursa(job #3222512)

Utilizator redstonegamer22Andrei Ion redstonegamer22 Data 10 aprilie 2024 16:29:58
Problema Divk Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <fstream>
#include <vector>
#include <algorithm>

using namespace std;

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

#define pb push_back
vector < vector < int > > modulo;

int main()
{
    int n,k,a,b,s=0,x,ans=0;
    cin>>n>>k>>a>>b;
    modulo.resize(k);
    modulo[0].pb(0);
    for(int i=1;i<=n;i++)
    {
        cin>>x;
        s=(s+x)%k;
        if(!modulo[s].size()){
            modulo[s].pb(i);
            continue;
        }
        int st=lower_bound(modulo[s].begin(),modulo[s].end(),i-b+1)-modulo[s].begin();
        int dr=upper_bound(modulo[s].begin(),modulo[s].end(),i-a+1)-modulo[s].begin();
        modulo[s].pb(i);
        ans+=(dr-st);
    }
    cout<<ans;
    return 0;
}