Pagini recente » Cod sursa (job #659226) | Cod sursa (job #2920995) | Cod sursa (job #1039071) | Cod sursa (job #2328555) | Cod sursa (job #2907671)
/// [A][M][C][B][N] ///
#include <bits/stdc++.h>
using namespace std;
const int mod = 9901, inf = 0x3f3f3f3f;
const char sp = ' ', nl = '\n';
ifstream fin("divk.in");
ofstream fout("divk.out");
int main() {
ios::sync_with_stdio(0);
cin.tie(0), cout.tie(0);
int n, k, a, b;
fin >> n >> k >> a >> b;
vector<vector<int>> m(k);
m[0].push_back(0);
int x, y = 0;
for (int i = 1; i <= n; ++i) {
fin >> x;
y = (x + y) % k;
m[y].push_back(i);
}
long long ans = 0;
for (auto& v : m) {
for (int i = 0; i < v.size() - 1; ++i) {
int st = i + 1, dr = v.size() - 1, mid, l = -1, r = -1;
while (st <= dr) {
mid = (st + dr) / 2;
if (v[mid] - v[i] >= a) {
l = mid, dr = mid - 1;
}
else {
st = mid + 1;
}
}
st = i + 1, dr = v.size() - 1;
while (st <= dr) {
mid = (st + dr) / 2;
if (v[mid] - v[i] <= b) {
r = mid, st = mid + 1;
}
else {
dr = mid - 1;
}
}
if (l != -1 && r != -1) {
ans += r - l + 1;
}
}
}
fout << ans;
}