제출 #1320166

#제출 시각아이디문제언어결과실행 시간메모리
1320166bearrbearrTrampoline (info1cup20_trampoline)C++20
0 / 100
683 ms48684 KiB
#include <bits/stdc++.h> using namespace std; #pragma GCC optimize("O3,unroll-loops") #define int long long #define ii pair<int,int> #define fir first #define sec second #define pb push_back int r,c,n; int bin[200002][20]; signed main(){ ios_base::sync_with_stdio(0); cin.tie(0);cout.tie(0); cin>>r>>c>>n; map<int,vector<ii> > mp; int x[n+1],y[n+1]; vector<int>mana; for(int q=1;q<=n;q++){ cin>>x[q]>>y[q]; mp[x[q]].pb({y[q],q}); mana.pb(x[q]); } sort(mana.begin(),mana.end()); mana.erase(unique(mana.begin(),mana.end()),mana.end()); for(auto a : mp){ sort(mp[a.fir].begin(),mp[a.fir].end()); } for(auto a : mana){ if(mp[a+1].empty())continue; vector<ii>z=mp[a+1]; for(auto [b,id] : mp[a]){ int idx=lower_bound(mp[a+1].begin(),mp[a+1].end(),make_pair(b,0LL))-mp[a+1].begin(); if(idx>=mp[a+1].size())break; bin[id][0]=mp[a+1][idx].sec; } } for(int q=1;q<20;q++){ for(int w=1;w<=n;w++){ bin[w][q]=bin[bin[w][q-1]][q-1]; } } int qu; cin>>qu; while(qu--){ int xm,ym,xs,ys; cin>>xm>>ym>>xs>>ys; if(xm>xs || ym>ys){ cout<<"No"<<endl;continue; } if(xm==xs){ cout<<"Yes"<<endl; continue; } if(mp[xm].empty()){ cout<<"No"<<endl;continue; } int idx=lower_bound(mp[xm].begin(),mp[xm].end(),make_pair(ym,0LL))-mp[xm].begin(); if(idx==mp[xm].size()){ cout<<"No"<<endl; continue; } int id=mp[xm][idx].sec; int jrk=xs-xm-1; for(int q=19;q>=0;q--){ if(id>=(1<<q)){ jrk-=(1<<q); id=bin[id][q]; } } if(id==0 || y[id]>ys){ cout<<"No"<<endl; } else{ 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...