#include<bits/stdc++.h>
#define f0r(i,n) for(int i = 0;i<n;i++)
#define pb push_back
#define ll long long int
using namespace std;
const int mxn = 500005;
int main(){
ll r,c,n;
cin>>r>>c>>n;
vector<pair<ll,ll>>green;
map<ll, set<ll>>m;
f0r(i,n){
ll x,y;
cin>>x>>y;
m[x].insert(y);
green.pb({x,y});
}
map<pair<ll,ll>, pair<ll,ll>>nxt;
for(pair<ll,ll> p : green){
auto ptr = lower_bound(m[p.first + 1].begin(), m[p.first + 1].end(), p.second);
if(ptr != m[p.first + 1].end())nxt[p] = {p.first + 1, *ptr};
else nxt[p] = {p.first + 1, p.second};
}
int t;
cin>>t;
while(t--){
bool ans = 1;
ll sx, sy, ex, ey;
cin>>sx>>sy>>ex>>ey;
if(ex - sx == 1){
ans = 0;
for(int k : m[sx]){
if(k <= ey){
ans = 1;
break;
}
}
if(ans)cout<<"Yes"<<'\n';
else cout<<"No"<<'\n';
}
else{
if(sx == ex)cout<<"Yes"<<'\n';
else if(sx > ex || sy > ey)cout<<"No"<<'\n';
else if(m.count(sx) == 0 || m.count(ex) == 0)cout<<"No"<<'\n';
else{
auto ptr1 = lower_bound(m[sx].begin(), m[sx].end(), sy);
//auto ptr2 = upper_bound(m[ex].begin(), m[ex].end(), ey);
if(ptr1 == m[sx].end()){
ans = 0;
}
/*
if(ptr2 == m[sy].begin()){
cout<<"No"<<'\n';
break;
}
ptr2--;
*/
if(ans){
sy = *ptr1;
//ey = *ptr2;
pair<ll,ll> loc = {sx, sy};
while(loc.first <ex){
//cout<<loc.first<<' '<<loc.second<<'\n';
if(nxt.count(loc) == 0){
ans = 0;
break;
}
else{
if(loc.first == ex - 1)loc = {loc.first + 1, loc.second};
else loc = nxt[loc];
}
}
if(!ans)cout<<"No"<<'\n';
else if(loc.second <= ey)cout<<"Yes"<<'\n';
else cout<<"No"<<'\n';
}
else{
cout<<"No"<<'\n';
}
}
}
}
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
21 ms |
1496 KB |
200 token(s): yes count is 21, no count is 179 |
2 |
Correct |
28 ms |
1752 KB |
200 token(s): yes count is 70, no count is 130 |
3 |
Correct |
12 ms |
1372 KB |
197 token(s): yes count is 25, no count is 172 |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1980 ms |
28840 KB |
4000 token(s): yes count is 99, no count is 3901 |
2 |
Correct |
1872 ms |
28776 KB |
4000 token(s): yes count is 91, no count is 3909 |
3 |
Execution timed out |
2050 ms |
20604 KB |
Time limit exceeded |
4 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Execution timed out |
2044 ms |
12956 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
42 ms |
1116 KB |
expected NO, found YES [16th token] |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Execution timed out |
2039 ms |
36084 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |