#include <bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
const int inf = 1e18;
signed main(){
int n, m, Q; cin >> n >> m >> Q;
vector<int> L[n + 1];
map<int, bool> C[n + 1];
for (int i = 1; i <= m; i++){
int l, r; cin >> l >> r;
C[r][l] = 1;
L[r].push_back(l);
}
for (int i = 1; i <= n; i++){
L[i].push_back(i);
}
for (auto &i : L) sort(i.begin(), i.end());
for (int i = 1; i <= n; i++){
int siz = L[i].size();
if (siz == 1) continue;
for (int j = 0; j < siz - 1; j++){
for (int k = L[i][j]; k < L[i][j + 1]; k++){
for (auto &[u, v] : C[k]){
if (u <= L[i][j]) C[i][u] |= v;
}
}
for (auto &k : C[L[i][j] - 1]) C[i][k.first] |= k.second;
}
}
for (int q = 1; q <= Q; q++){
int l, r; cin >> l >> r;
cout << (C[r][l] ? "YES" : "NO") << 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... |