Pagini recente » Cod sursa (job #451468) | Cod sursa (job #123439) | Cod sursa (job #2605248) | Cod sursa (job #1955137) | Cod sursa (job #2907669)
/// [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;
map<int, vector<int>> m;
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& p : m) {
auto& v = p.second;
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;
}