Cod sursa(job #2777344)

Utilizator etienAndrone Stefan etien Data 23 septembrie 2021 00:00:50
Problema Divk Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.96 kb
#include<bits/stdc++.h>
using namespace std;
ifstream fin("divk.in");
ofstream fout("divk.out");
vector<long long>v[100001];
int main()
{
    long long n,a,b,i,x,k;
    long long s=0,nr=0;
    v[0].push_back(0);
    fin>>n>>k>>a>>b;
    for(i=1;i<=n;i++)
    {
        fin>>x;
        s=s+x;
        s%=k;
        v[s].push_back(i);
    }
    for(i=0;i<=k;i++)
    {
        if(v[i].size()>=2)
        {
            //cout<<i<<" ";
            int p1,p2=1;
            for(p1=0;p1<v[i].size()-1;p1++)
            {
                while(p2<v[i].size()&&v[i][p1]+b>=v[i][p2])
                {
                    if(v[i][p1]+a<=v[i][p2])
                    {
                        nr++;
                        //cout<<p1<<" "<<p2<<" ";
                    }
                    p2++;
                }
                if(p2==v[i].size())
                    p2--;
            }
            //cout<<endl;
        }
    }
    fout<<nr;
}