Submission #1279648

#TimeUsernameProblemLanguageResultExecution timeMemory
1279648avighnaHarvest (JOI20_harvest)C++20
0 / 100
52 ms1396 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...