Submission #524691

#TimeUsernameProblemLanguageResultExecution timeMemory
524691gagik_2007Trampoline (info1cup20_trampoline)C++17
73 / 100
2080 ms17664 KiB
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
#include <cmath>
#include <ctime>
#include <set>
#include <map>
#include <stack>
#include <queue>
#include <deque>
#include <limits>
#include <iomanip>
#include <unordered_set>
#include <unordered_map>
using namespace std;

typedef long long ll;
typedef long double ld;
typedef unordered_multiset<ll> whydoweneedunorderedmultiset;

#define ff first
#define ss second
#define esle else

ll ttt;
const ll INF = 1e18;
const ll MOD = 1e9 + 7;
const ll N = 9;
ll l, r, k, n, m;
map<ll, set<ll>>g;

int main() {
	cin >> k >> m >> n;
	for (int i = 0; i < n; i++) {
		ll x, y;
		cin >> x >> y;
		g[x].insert(y);
	}
	cin >> ttt; 
	while (ttt--) {
		ll xs, ys, xe, ye;
		cin >> xs >> ys >> xe >> ye;
		if (xs == xe && ys <= ye) {
			cout << "YES" << endl;
		}
		else if (xs > xe || ys > ye) {
			cout << "NO" << endl;
		}
		else {
			ll cur_y = ys;
			ll cur_x = xs;
			bool ok = true;
			while (cur_x != xe && cur_y <= ye) {
				auto it = g[cur_x].lower_bound(cur_y);
				if (it == g[cur_x].end()) {
					ok = false;
					break;
				}
				else { 
					cur_y = *it;
				}
				cur_x++;
			}
			ok = ok && (cur_y <= ye);
			if (ok) {
				cout << "YES" << endl;
			}
			else cout << "NO" << endl;
		}
	}
	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...