제출 #1320164

#제출 시각아이디문제언어결과실행 시간메모리
1320164bearrbearrTrampoline (info1cup20_trampoline)C++20
0 / 100
2095 ms48680 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>y=mp[a]; vector<ii>z=mp[a+1]; for(auto [b,id] : mp[a]){ int idx=lower_bound(z.begin(),z.end(),make_pair(b,0LL))-z.begin(); if(idx>=z.size())break; bin[id][0]=z[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; } vector<ii>z=mp[xm]; int idx=lower_bound(z.begin(),z.end(),make_pair(ym,0LL))-z.begin(); if(idx==z.size()){ cout<<"No"<<endl; continue; } int id=z[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...