Pagini recente » Cod sursa (job #1101938) | Cod sursa (job #880139) | Cod sursa (job #2604512) | Cod sursa (job #302744) | Cod sursa (job #2526751)
#include <bits/stdc++.h>
using namespace std;
ifstream ci("divk.in");
ofstream cou("divk.out");
int n,k,a,b,v[500005];
long long sol;
vector<int>h[100001];
void citire()
{
ci>>n>>k>>a>>b;
for(int i=1; i<=n; i++)
{
ci>>v[i];
}
}
int calc(int nr)
{
int i,j,secv=0,l,st,dr;
for(i=0; i<k; i++ )
{
l=h[i].size();
for(j=0; j<l; j++ )
{
v[j]=h[i][j];
}
st=0;
for(dr=0; dr<l; dr++)
{
while(v[dr]-v[st]>nr )
{
st++;
}
secv+=dr-st+1;
}
}
return secv;
}
void rez()
{
int s,i;
h[0].push_back(0);
s=0;
for(i=1; i<=n; i++)
{
s+=v[i];
s=s%k;
h[s].push_back(i);
}
sol=calc(b)-calc(a-1);
cou<<sol;
}
int main()
{
citire();
rez();
return 0;
}