#include <bits/stdc++.h>
using namespace std;
#define ll long long
int n,m,q;
struct LazySeg {
int n;
vector<ll> seg;
vector<ll> lazy; // dirt
void init(int _n) {
for (n = 1; n < _n; n *= 2);
seg = lazy = vector<ll>(2 * n,-1);
}
void pull(int i) {
seg[i] = max(seg[2 * i],seg[2 * i + 1]);
}
void push(int i, int l, int r) {
if (l + 1 < r) {
lazy[2 * i] = max(lazy[2*i],lazy[i]);
lazy[2 * i + 1] = max(lazy[2*i+1],lazy[i]);
}
seg[i] = max(seg[i],lazy[i]);//applying lazy
lazy[i] = -1;
}
void update(int lo, int hi, ll v, int i, int l, int r) {
push(i, l, r);
if (lo >= r || hi <= l) return;
if (lo <= l && r <= hi) {
lazy[i] = max(lazy[i],v);
push(i, l, r);
return;
}
int m = (l + r) / 2;
update(lo, hi, v, 2 * i, l, m);
update(lo, hi, v, 2 * i + 1, m, r);
pull(i);
}
//range min query
//range max update
ll query(int lo, int hi, int i, int l, int r) {
push(i, l, r);
if (lo >= r || hi <= l) return INT_MAX;
if (lo <= l && r <= hi) return seg[i];
int m = (l + r) / 2;
return min(query(lo, hi, 2 * i, l, m),query(lo, hi, 2 * i + 1, m, r));
}
void upd(int l, int r, ll v) {
update(l, r, v, 1, 0, n);
}
ll qry(int l, int r) {
return query(l, r, 1, 0, n);
}
};
typedef pair<int,int> p;
#define f first
#define s second
vector<p> curts,order;
vector<int> queries[500005];
map<p,int> ans;
int main(){
//freopen("c_in.txt","r",stdin);
cin>>n>>m>>q;
LazySeg seg;
seg.init(n);
for (int i=0;i<m;i++){
int a,b;cin>>a>>b;
a--;b--;
curts.push_back({b,a});//sort by right element
}
for (int i=0;i<q;i++){
int a,b;cin>>a>>b;
a--;b--;
order.push_back({a,b});
queries[b].push_back(a);//fix right
}
int ptr=0;
sort(curts.begin(),curts.end());
for (int i=0;i<n;i++){
while (ptr<m&&curts[ptr].f<=i){
int rit = curts[ptr].f,lef=curts[ptr].s;
seg.upd(lef,rit+1,lef); //setting everything in range to max of its left value
ptr++;
}
for (int x:queries[i]){
int res = seg.qry(x,i+1);
if (res<x){
ans[{x,i}]=0;
}else{
ans[{x,i}]=1;
}
}
}
for (auto [x,y]:order){
int res = ans[{x,y}];
if (res==0){
cout<<"NO";
}else{
cout<<"YES";
}
cout<<endl;
}
}
# | 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... |