Pagini recente » Cod sursa (job #95239) | Cod sursa (job #1809189) | Cod sursa (job #724223) | Cod sursa (job #574831) | Cod sursa (job #181801)
Cod sursa(job #181801)
#include <stdio.h>
#include <vector>
using namespace std;
vector <int>v[100000];
long n,k,a,b,i,j,x,p,q,l,sol;
long long s;
int main(){
freopen("divk.in","r",stdin);
freopen("divk.out","w",stdout);
scanf("%ld %ld %ld %ld",&n,&k,&a,&b);
v[0].push_back(0);
for (i=1;i<=n;++i){
scanf("%ld\n",&x);
s=(long long)s+x;
v[(s%k)].push_back(i);
}
for (i=0;i<k;++i){
p=0;q=0;
l=v[i].size();
for (j=0;j<l;j++){
while (v[i][j]-v[i][p+1]>=a){++p;if (p==l-1)break;}
while (v[i][j]-v[i][q]>b&&q<l-1)++q;
if (v[i][j]-v[i][p]>=a)
if (v[i][j]-v[i][q]<=b)
if (p-q+1>0)sol+=p-q+1;
}
}
printf("%ld\n",sol);
return 0;
}