#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n, m, k, t;
ll d[5007][5007];
char a[5007][5007];
void clear_me(){
for(int i = 0; i <= n; i++)
for(int j = 0; j <= m;j ++)
d[i][j] = 0;
}
int main(){
cin >> n >> m >> k;
for(int i = 0; i <= min((ll)(5000), n); i++)
for(int j = 0; j <= min((ll)(5000), m); j++)
a[i][j] = 'B';
set<pair<ll, ll>> st;
for(int i = 0; i < k; i++){
ll aa, bb;
cin >> aa >> bb;
st.insert({aa, bb});
if(aa > 5000 || bb > 5000){
continue;
}
a[aa][bb] = 'G';
}
cin >> t;
while(t--){
ll x1, y1, x2, y2;
cin >> x1 >> y1 >> x2 >> y2;
if(m > 1 || n > 1){
pair<ll, ll> p = {x1, y1};
auto u = lower_bound(st.begin(), st.end(), p);
auto u2 = *u;
//cout << u2.first << ' ' << u2.second << endl;
if(u == st.end() || u2.first > x1 || u2.second > y2){
cout << "No" << endl;
continue;
}
cout << "Yes" << endl;
continue;
}
clear_me();
d[x1][y1] = 1;
for(int i = min(x1, x2); i <= max(x1, x2); i++){
for(int j = min(y1, y2); j <= max(y1, y2); j++){
if(d[i][j - 1] == 1 || (a[i - 1][j] == 'G' && d[i - 1][j] == 1))
d[i][j] = 1;
}
}
if(d[x2][y2] == 1)
cout << "Yes" << endl;
else
cout << "No" << endl;
}
return 0;
}
/*
5 8 3
2 3
3 7
5 2
1
3 2 4 8
*/
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
56 ms |
1612 KB |
expected NO, found YES [2nd token] |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Execution timed out |
2079 ms |
25132 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Execution timed out |
2076 ms |
37308 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
589 ms |
25360 KB |
expected NO, found YES [17th token] |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Execution timed out |
2074 ms |
37272 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |