Submission #1170581

#TimeUsernameProblemLanguageResultExecution timeMemory
1170581lopkusTrampoline (info1cup20_trampoline)C++20
0 / 100
2096 ms2708 KiB
#include <bits/stdc++.h>

int main() {
  std::ios::sync_with_stdio(false);
  std::cin.tie(nullptr);
  int r, c, n;
  std::cin >> r >> c >> n;
  std::vector<std::pair<int,int>> a(n + 1);
  for(int i = 1; i <= n; i++) {
    std::cin >> a[i].first >> a[i].second;
  }
  std::sort(a.begin() + 1, a.end());
  int q;
  std::cin >> q;
  while(q--) {
    int x1, y1, x2, y2;
    std::cin >> x1 >> y1 >> x2 >> y2;
    if(y1 > y2 || x2 < x1) {
      std::cout << "No\n";
      continue;
    }
    int ok = 1;
    int currx = x1, curry = y1;
    while(true) {
      if(currx == x2) {
        break;
      }
      int l = 1, r = n, p = - 1;
      while(l <= r) {
        int mid = (l + r) / 2;
        if(a[mid].first >= currx) {
          r = mid - 1;
          p = mid;
        }
        else {
          l = mid + 1;
        }
      }
      if(p == - 1 || a[p].first != currx) {
        ok = 0;
        break;
      }
      l = p, r = n;
      int s = - 1;
      while(l <= r) {
        int mid = (l + r) / 2;
        if(a[mid].first > currx) {
          r = mid - 1;
          continue;
        }
        if(a[mid].second >= curry) {
          r = mid - 1;
          s = mid;
        }
        else {
          l = mid + 1;
        }
      }
      if(s == - 1) {
        ok = 0;
        break;
      }
      currx += 1;
      curry = a[s].second;
    }
    if(ok) {
      std::cout << "Yes\n";
    }
    else {
      std::cout << "No\n";
    }
  }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...