Cod sursa(job #3222513)

Utilizator redstonegamer22Andrei Ion redstonegamer22 Data 10 aprilie 2024 16:39:57
Problema Divk Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.73 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;
    if(a>b)
        swap(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()==0)
        {
            modulo[s].pb(i);
            continue;
        }
        int st=lower_bound(modulo[s].begin(),modulo[s].end(),i-b)-modulo[s].begin();
        int dr=lower_bound(modulo[s].begin(),modulo[s].end(),i-a+1)-modulo[s].begin();
        modulo[s].pb(i);
        ans+=(dr-st);
    }
    cout<<ans;
    return 0;
}