Pagini recente » Cod sursa (job #2813990) | Cod sursa (job #708495) | Cod sursa (job #1126239) | Cod sursa (job #1884291) | Cod sursa (job #337465)
Cod sursa(job #337465)
#include<cstdio>
#include<vector>
using namespace std;
const int K = (1<<17);
vector<int> v[K];
int n,k,a,b;
void citire()
{
int i,x,s=0;
char sir[10],*p;
scanf("%d%d%d%d\n",&n,&k,&a,&b);
v[0].push_back(0);
for(i=1;i<=n;++i)
{
fgets(sir,10,stdin);
for(x=0,p=sir;*p && *p!='\n';++p)
x=x*10+*p-'0';
//scanf("%d",&x);
s+=x;
s%=k;
v[s].push_back(i);
}
}
void calcul()
{
long long rez=0;
int i,j,pa,pb;
for(i=0;i<k;++i)
{
pa=pb=0;
n=v[i].size();
for(j=0;j<n;++j)
{
while(pa!=n && v[i][pa]-v[i][j]<a)
++pa;
while(pb!=n && v[i][pb]-v[i][j]<=b)
++pb;
rez+=pb-pa;
}
}
printf("%lld\n",rez);
}
int main()
{
freopen("divk.in","r",stdin);
freopen("divk.out","w",stdout);
citire();
calcul();
return 0;
}