#include<bits/stdc++.h>
using namespace std;
#define int long long
int32_t main(){
ios_base::sync_with_stdio(0);
cin.tie(NULL);
int n,m,q; cin>>n>>m>>q;
bool c4 = true;
vector<set<int>> lst(n);
vector<int> str(n,1e18);
for(int i = 0; i < m; i++){
int a,b; cin>>a>>b;
lst[b-1].insert(a-1);
str[a-1] = min(str[a-1],b-1);
}
vector<pair<int,int>> queries(q);
for(int i = 0; i < q; i++){
int a,b; cin>>a>>b;
if(a != 1) c4 = false;
queries[i] = {a-1,b-1};
}
if(c4){
vector<bool> can(n,0);
int cur_c = 0;
for(int j = str[0]; j < n; j++){
if(lst[j].empty()) continue;
auto p = lst[j].begin();
if(p == lst[j].end() || *p > cur_c + 1) continue;
cur_c = j;
can[j] = true;
}
for(int i = 0; i < q; i++){
if(can[queries[i].second]) cout<<"YES"<<'\n';
else cout<<"NO"<<'\n';
}
}else{
vector<vector<bool>> can(n, vector<bool>(n,0));
for(int i = 0; i < n; i++){
if(str[i] == 1e18) continue;
int st = str[i], cur_c = i;
for(int j = str[i]; j < n; j++){
auto p = lst[j].lower_bound(i);
if(p == lst[j].end() || *p > cur_c+1) continue;
cur_c = j;
can[i][j] = true;
}
}
for(int i = 0; i < q; i++){
if(can[queries[i].first][queries[i].second]) 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... |