Submission #1124553

#TimeUsernameProblemLanguageResultExecution timeMemory
1124553yusufhocaogluTrampoline (info1cup20_trampoline)C++20
100 / 100
823 ms26240 KiB
#include <bits/stdc++.h> #define vi vector<int> #define pri pair<int,int> using namespace std; int main() { int r,c,n;cin>>r>>c>>n; vector<pri> green(n); for (int i = 0;i<n;i++) { int a,b; cin>>a>>b; green[i] = pri{a,b}; } sort(green.begin(),green.end()); int l = 1; vector<vi> go(n,vi(20)); for (int i = 0;i<n;i++) { //cout<<green[i].first<<" "<<green[i].second<<endl; while (l<green.size() && (green[l].first <= green[i].first || (green[i].first+1 == green[l].first && green[l].second<green[i].second))) l++; go[i][0] = l; if (l==n || green[l].first!=green[i].first+1) go[i][0] = -1; } for (int i = 1;i<20;i++) { for (int j = 0;j<n;j++) { if (go[j][i-1]==-1) { go[j][i] = -1;continue; } go[j][i] = go[go[j][i-1]][i-1]; } } int q;cin>>q; while (q--) { int rs,cs,re,ce;cin>>rs>>cs>>re>>ce; if (rs>re || cs>ce) { cout<<"No"<<endl;continue; } if (rs==re) { cout<<"Yes"<<endl;continue; } auto it = lower_bound(green.begin(),green.end(),pri{rs,cs}); if (it==green.end() || it->first != rs) { cout<<"No"<<endl;continue; } auto i = it-green.begin(); // go re-rs rows from i int dist = re-rs-1; int l = 0; while (i!=-1 && dist!=0) { if (dist&1) i=go[i][l]; l++; dist>>=1; } if (i==-1 || green[i].second > ce) { cout<<"No"<<endl;continue; } cout<<"Yes"<<endl; } }
#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...