Submission #1312830

#TimeUsernameProblemLanguageResultExecution timeMemory
1312830samarthkulkarniCurtains (NOI23_curtains)C++20
0 / 100
3 ms2360 KiB
#include <bits/stdc++.h>
using namespace std;

using ll = long long;
#define vi vector<long long>
#define all(x) x.begin(), x.end()
#define endl "\n"
#define pr pair<ll, ll>
#define ff first
#define ss second

void solution();
int main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    solution();
    return 0;
}


const int N = 5e5+10;
const int K = 25;
int nxt[N];
pr a[N];
int BL[N][K];

void solution() {
	ll n, m, q;
	cin >> n >> m >> q;

	for (int i = 0; i < m; i++) cin >> a[i].ff >> a[i].ss;

	// sort(a, a+m);
	
	vi qw(n+1, 1e9);

	for (ll i = 0; i < m; i++) {
		qw[a[i].ff] = min(qw[a[i].ff], i);
	}


	iota(nxt, nxt+N, 0);

	for (int i = 0; i < m; i++) {
		ll mx = 1e9;
		for (int j = 0; j < m; j++) {
			if (j == i) continue;
			if (a[j].ff <= a[i].ss+1 && a[j].ff >= a[i].ff && a[j].ss >= a[i].ss) {
				if (mx > a[j].ss) {
					mx = a[j].ss;
					nxt[i] = j;
				}
			} 
		}
	}





	for (int j = 0; j < K; j++) {
		for (int i = 0; i < m; i++) {
			if (BL[i][j] == 0) {BL[i][j] = nxt[i]; continue;}
			BL[i][j] = BL[BL[i][j-1]][j-1];
		}
	}


	auto cal = [&](int l, int r) {
		int k = qw[l];
		for (int j = K-1; j >= 0; j--) {
			if (a[BL[k][j]].ss <= r) {
				k = BL[k][j];
			}
		}

		return a[k].ss == r;
	};



	while (q--) {
		int l, r;
		cin >> l >> r;

 
		if (qw[l] == 1e9) {
			cout << "NO" << endl;
			continue;
		}


		if (cal(l, r)) {cout << "YES" << endl;}
		else cout << "NO" << endl;

	}

	


	

}
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...