Submission #525317

#TimeUsernameProblemLanguageResultExecution timeMemory
525317ksu2009enTrampoline (info1cup20_trampoline)C++14
23 / 100
2091 ms84100 KiB
#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 > 5000 || n > 5000){ 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 */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...