#include <bits/stdc++.h>
using namespace std;
// ok a seg tem que ter duas operações
// 1 -> settar todos os elementos x no range [l, r] para max(x, v)
// 2 -> query [l, r] para min value no range
#define pii pair<int, int>
const int MAXN = 5e5;
int lazy[4*MAXN];
int seg[4*MAXN];
const int INF = 0x3f3f3f3f;
// its already built, all zeroes!!
void unlazy(int node, int l, int r) {
if (lazy[node] == 0) return;
seg[node] = max(seg[node], lazy[node]);
if (l < r) {
lazy[2*node] = max(lazy[2*node], lazy[node]);
lazy[2*node + 1] = max(lazy[2*node + 1], lazy[node]);
}
lazy[node] = 0;
}
void update(int node, int l, int r, int tl, int tr, int x) {
unlazy(node, l, r);
if ((tr < l) || (r < tl)) return;
if ((tl <= l) && (r <= tr)) {
lazy[node] = x;
unlazy(node, l, r);
return;
}
int m = (l + r)/2;
update(2*node, l, m, tl, tr, x);
update(2*node + 1, m + 1, r, tl, tr, x);
seg[node] = min(seg[2*node], seg[2*node + 1]);
}
int query(int node, int l, int r, int tl, int tr) {
unlazy(node, l, r);
if ((tr < l) || (r < tl)) return INF;
if ((tl <= l) && (r <= tr)) return seg[node];
int m = (l + r)/2;
return min(query(2*node, l, m, tl, tr), query(2*node + 1, m + 1, r, tl, tr));
}
int32_t main() {
int n, m, q;
cin >> n >> m >> q;
vector<vector<int>> lForR(n + 1);
vector<vector<pii>> queriesForR(n + 1);
for (int i = 0; i < m; i++) {
int l, r;
cin >> l >> r;
lForR[r].push_back(l);
}
for (int i = 0; i < q; i++) {
int l, r;
cin >> l >> r;
queriesForR[r].push_back({l, i});
}
vector<int> ans(q);
for (int r = 1; r <= n; r++) {
for (auto l : lForR[r]) {
update(1, 1, n, l, r, l);
}
for (auto [l, idx] : queriesForR[r]) {
int x = query(1, 1, n, l, r);
if (x == l) ans[idx] = 1;
}
}
for (auto u : ans) if (u) cout << "YES\n"; else cout << "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... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |