Pagini recente » Cod sursa (job #462994) | Cod sursa (job #898246) | Cod sursa (job #1755319) | Cod sursa (job #1021050) | Cod sursa (job #1141838)
#include<fstream>
#define N 500100
#define K 100100
using namespace std;
ifstream f("divk.in");
ofstream g("divk.out");
int nr[K],v[N],i,n,mo,k,a,b,j;
long long S[N],sol;
int main ()
{
f>>n>>k>>a>>b;
for(i=1;i<=n;++i)
f>>v[i];
j=0;
nr[0]=1;
for(i=1;i<=n;++i)
{
S[i]=S[i-1]+v[i];
mo=S[i]%k;
if(i-j>b)
{
nr[S[j]%k]--;
j++;
}
sol+=nr[mo];
nr[S[i]%k]++;
}
for(i=0;i<k;++i)
nr[i]=0;
nr[0]=1;
a--;
j=0;
for(i=1;i<=n;++i)
{
mo=S[i]%k;
if(i-j>a)
{
nr[S[j]%k]--;
j++;
}
sol-=nr[mo];
nr[S[i]%k]++;
}
g<<sol;
}