Pagini recente » Cod sursa (job #1169760) | Cod sursa (job #839751) | Cod sursa (job #788032) | Cod sursa (job #1837657) | Cod sursa (job #1132448)
#include <cstdio>
#include <vector>
using namespace std;
void printv(const vector<int>& v) {
for(int x : v) {
printf("%d ", x);
}
printf("\n");
}
int main(int argc, char *argv[]) {
freopen("divk.in", "r", stdin);
freopen("divk.out", "w", stdout);
int N, K, A, B;
scanf("%d%d%d%d", &N, &K, &A, &B);
vector<int> s = {0};
vector<int> r(K, 0);
for(int i = 0; i < N; ++i) {
int x;
scanf("%d", &x);
s.push_back((s.back() + x) % K);
}
// printf("s = "); printv(s);
long long total = 0;
for(int i = 0; i < N + 1; ++i) {
int out = i - B - 1, in = i - A;
if(out >= 0) r[s[out]]--;
if(in >= 0) r[s[in]]++;
total += r[s[i]];
}
printf("%lld\n", total);
return 0;
}