#include "bits/stdc++.h"
using namespace std;
#define SZ(s) (int)s.size()
#define ff first
const int N = 2e5 + 5;
int c, r, n, x[N], y[N], sp[N][25];
map <int,int> mp;
map <pair<int,int>, int> ind;
map <int, pair<int,int>> ind1;
int main(){
	ios::sync_with_stdio(false); cin.tie(nullptr);
	cin >> r >> c >> n;
	vector <int> v;
	for(int i = 1; i <= n; i++){
		cin >> x[i] >> y[i];
		ind[{x[i], y[i]}] = i;
		ind1[i] = {x[i], y[i]};
		if(mp.find(x[i]) == mp.end()){
			mp[x[i]] = 1;
			v.push_back(x[i]);
		}
	}
	sort(v.begin(), v.end());
	for(int i = 0; i < SZ(v); i++){
		mp[v[i]] = i;
	}
	vector <vector <int>> v1;
	v1.resize(SZ(v)+1);
	for(int i = 1; i <= n; i++){
		v1[mp[x[i]]].push_back(y[i]);
	}
	for(int i = 0; i < SZ(v1); i++){
		sort(v1[i].begin(), v1[i].end());
	}
	for(int i = 1; i <= n; i++){
		if(mp.find(x[i]+1) == mp.end()){
			continue;
		}
		int k = lower_bound(v1[mp[x[i]+1]].begin(), v1[mp[x[i]+1]].end(), y[i]) - v1[mp[x[i]+1]].begin();
		if(k == SZ(v1[mp[x[i]+1]])) {
			continue;
		}
		sp[i][0] = ind[{x[i]+1,v1[mp[x[i]+1]][k]}];
	}
	for(int j = 1; j <= 20; j++){
		for(int i = 1; i <= n; i++){
			sp[i][j] = sp[sp[i][j-1]][j-1];
		}
	}
	int t;
	cin >> t;
	while(t--){
		int x1, y1, x2, y2;
		cin >> x1 >> y1 >> x2 >> y2;
		if(x1 == x2 and y1 <= y2){
			cout << "Yes\n";
			continue;
		}
		if(mp.find(x1) == mp.end()){
			cout << "No\n";
			continue;
		}
		int t1 = lower_bound(v1[mp[x1]].begin(), v1[mp[x1]].end(), y1) - v1[mp[x1]].begin();
		if(t1 == SZ(v1[mp[x1]])){
			cout << "No\n";
			continue;
		}
		int k = ind[{x1,v1[mp[x1]][t1]}];
		for(int i = 20; i >= 0; i--){
			if((sp[k][i] > 0)){
				if((x[sp[k][i]] < x2)) k = sp[k][i];
			}
		}
		cout << (x[k] == x2-1 and y[k] <= y2 ? "Yes\n" : "No\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... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |