Pagini recente » Cod sursa (job #2857231) | Rating Catana Alexandra-Vasilica (AlexaCatana) | Cod sursa (job #311070) | Cod sursa (job #2777341)
#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)
{
for(long long j=0;j<v[i].size();j++)
{
long long st=j+1,dr=v[i].size()-1,mi,poz1=-1,poz2=-1;
while(st<=dr)
{
mi=(st+dr)/2;
if(v[i][j]+a<=v[i][mi])
{
poz1=mi;
dr=mi-1;
}
else st=mi+1;
}
st=1;dr=v[i].size()-1;
while(st<=dr)
{
mi=(st+dr)/2;
if(v[i][j]+b>=v[i][mi])
{
poz2=mi;
st=mi+1;
}
else dr=mi-1;
}
if(poz1!=-1&&poz2!=-1)
{
long long x=poz2-poz1+1;
nr+=x;
}
}
}
}
fout<<nr;
}