Submission #692328

#TimeUsernameProblemLanguageResultExecution timeMemory
692328NeroZeinTrampoline (info1cup20_trampoline)C++14
11 / 100
586 ms43096 KiB
/*
 *    author: NeroZein
 *    created: 01.02.2023 13:03:54
*/
#include <bits/stdc++.h>
using namespace std;

#ifdef Nero
#include "Deb.h"
#else
#define deb(...)
#endif

const int N = 100005; 
const int Log = 21;

map<pair<int,int>, pair<int,int>> dp[Log]; 

signed main(){
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	int r, c, n;
	cin >> r >> c >> n;
	map<int, set<int>> se; 
	vector<pair<int,int>> p(n); 
	for (int i = 0; i < n; ++i) {
		pair<int,int> pp;
		cin >> pp.first >> pp.second;
		p[i] = pp;
		se[pp.first].insert(pp.second); 
	}
	sort(p.begin(), p.end()); 
	map<pair<int,int>, int> convert; 
	for (int i = 0; i < n; ++i) {
		int x = p[i].first;
		int y = p[i].second;
		if (se[x-1].empty()) {
			continue; 
		}
		auto it = se[x-1].upper_bound(y); 
		if (it == se[x-1].begin()) {
			continue; 
		}
		--it; 
		dp[0][p[i]] = {x-1, *it}; 
	}
	auto jump = [&](int x, int y, int k) {
		for (int j = 0; j < Log; ++j) {
			if ((k >> j) & 1) {
				auto pp = dp[j][{x, y}];
				x = pp.first, y = pp.second;
			}
		}
		return make_pair(x, y); 
	}; 
	int q;
	cin >> q; 
	while(q--) {
		int xs, ys, xf, yf;
		cin >> xs >> ys >> xf >> yf; 
		if (xf < xs || yf < ys) {
			cout << "NO" << '\n';
			continue;
		}
		if (xf == xs) {
			cout << "YES" << '\n';
			continue; 
		}
		auto it = se[xf-1].upper_bound(yf); 
		if (se[xf-1].empty() || it == se[xf-1].begin()) {
			cout << "NO" << '\n';
			continue; 
		}
		--it; 
		xf--; 
		yf = *it; 
		int dis = xf - xs; 
		auto pp = jump(xf, yf, dis); 
		xf = pp.first, yf = pp.second; 
		cout << (xf == xs && yf >= ys ? "YES" : "NO") << '\n';
	}
	return 0;
}
#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...