Pagini recente » Cod sursa (job #770528) | Monitorul de evaluare | Cod sursa (job #642979) | Cod sursa (job #1373591) | Cod sursa (job #1548249)
#include <cstdio>
#include <cstring>
#include <vector>
#define NMAX 500005
using namespace std;
long long nra[NMAX] , nrb[NMAX] , v[NMAX];
long long n , k , a , b , r , ra ,rb , sol , x;
int solve(int nr);
int main() {
freopen("divk.in" , "r" , stdin);
freopen("divk.out" , "w" , stdout);
scanf("%lld %lld %lld %lld" , &n , &k , &a , &b);
long long sum = 0;
for(int i = 1 ; i <= n ; ++i) {
scanf("%d" , &x);
sum += x;
v[i] = sum % k;
}
v[0] = 0;
for(int i = 0 ; i <= n ; ++i) {
r = v[i];
if(i >= a) {
ra = v[i - a];
++nra[ra];
}
sol += nra[r] - nrb[r];
if(i >= b) {
rb = v[i - b];
++nrb[rb];
}
}
printf("%lld" , sol);
return 0;
}