#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
#define fi first
#define se second
#define pb push_back
#define sz(a) (ll) a.size()
#define all(x) (x).begin(), (x).end()
ll n, m, q;
vector<ll> l, r, s, e;
void f() {
cin >> n >> m >> q;
l.resize(m);
r.resize(m);
s.resize(q);
e.resize(q);
vector<vector<bool>> dp(n+3, vector<bool>(n+3, 0));
vector<set<ll>> frnt(n+3, (set<ll>){});
vector<ll> mn(n+3, n+3);
for(ll i=0; i<m; i++){
cin >> l[i] >> r[i];
l[i]--; r[i]--;
mn[l[i]]=min(mn[l[i]], r[i]);
frnt[r[i]].insert(l[i]);
}
for(ll i=0; i<q; i++){ cin >> s[i] >> e[i]; s[i]--; e[i]--; }
for(ll i=0; i<n; i++){
if(mn[i]>=n) continue;
ll lst=mn[i];
dp[i][lst]=1;
for(ll j=lst+1; j<n; j++){
if(frnt[j].empty()) continue;
auto poin=lower_bound(all(frnt[j]), lst);
if(poin!=frnt[j].end() && lst>=(*poin)-1){
lst=j;
dp[i][j]=1;
}
}
}
for(ll i=0; i<q; i++){
if(dp[s[i]][e[i]]) cout << "YES";
else cout << "NO";
if(i!=q-1) cout << endl;
}
}
int main() {
int tc=1;
// cin >> tc;
for(int i=1; i<=tc; i++){
// cout << '#' << i << endl;
f();
if(i!=tc) 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... |