#include <bits/stdc++.h>
int main() {
std::ios_base::sync_with_stdio(false);
std::cin.tie(nullptr);
int64_t n, m, L, c;
std::cin >> n >> m >> L >> c;
std::vector<int64_t> emp(n), app(m);
for (auto &i : emp) {
std::cin >> i;
}
for (auto &i : app) {
std::cin >> i;
}
// how many values between range [l,r]
auto _cnt = [&](int64_t l, int64_t r) {
auto it2 = std::upper_bound(app.begin(), app.end(), r);
auto it1 = std::lower_bound(app.begin(), app.end(), l);
return it2 - it1;
};
auto cnt = [&](int64_t l, int64_t r) {
if (l <= r) {
return _cnt(l, r);
}
return _cnt(l, L - 1) + _cnt(0, r);
};
int q;
std::cin >> q;
while (q--) {
int64_t v, t;
std::cin >> v >> t;
--v;
int64_t st = emp[v];
int64_t en = emp[v] + t;
if (n != 1) {
if (emp[v] < emp[(v + 1) % n]) {
en = std::min(en, emp[(v + 1) % n]);
} else {
en = std::min(en, L + emp[(v + 1) % n]);
}
}
en %= L;
std::cout << cnt(st, en) << '\n';
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |