Submission #1028711

#TimeUsernameProblemLanguageResultExecution timeMemory
1028711DangerNoodle7591Trampoline (info1cup20_trampoline)C++17
100 / 100
736 ms56992 KiB
#include<bits/stdc++.h> using namespace std; #define lalala ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL); #define ll long long #define int long long int #define endl '\n' #define N 200100 #define M 30 #define big 2147483647 #define bigg 9223372036854775807 #define pb push_back #define p push #define ins insert #define f first #define s second int lca[N][M]; vector<pair<int,int>> ikinci; int gittik[N]; void dfs(int x,int a,int b){ if(gittik[x])return ; gittik[x]=1; lca[x][0]=x; pair<int,int> pa={a+1,b}; int yeni=(lower_bound(ikinci.begin(),ikinci.end(),pa)-ikinci.begin()); if(yeni!=(int)ikinci.size()&&ikinci[yeni].f==a+1){ lca[x][0]=yeni; if(gittik[yeni]==0)dfs(yeni,a+1,ikinci[yeni].s); return; } } void doldur(){ for(int i=1;i<M;i++){ for(int j=0;j<(int)ikinci.size();j++){ lca[j][i]=lca[lca[j][i-1]][i-1]; } } } int qua(int x,int y,int a,int b){ a--; pair<int,int> pa={x,y}; int node=lower_bound(ikinci.begin(),ikinci.end(),pa)-ikinci.begin(); if(node==(int)ikinci.size()||ikinci[node].f!=x) return 0; //cout<<a-x<<" "<<ikinci[node].f<<" "<<ikinci[node].s<<endl; int fark=a-x; for(int i=0;i<M;i++){ if((fark&(1<<i))){ node=lca[node][i]; } } x=ikinci[node].f, y=ikinci[node].s; //cout<<x<<" "<<y<<endl; if(x==a&&y<=b)return 1; return 0; } signed main(){ //lalala; int r,c,n;cin>>r>>c>>n; vector<pair<int,int>> v; for(int i=0;i<n;i++){ int a,b;cin>>a>>b; v.pb({b,a}); ikinci.pb({a,b}); } sort(v.begin(),v.end()); sort(ikinci.begin(),ikinci.end()); for(int i=0;i<(int)ikinci.size();i++){ if(gittik[i])continue; dfs(i,ikinci[i].f,ikinci[i].s); } doldur(); int q;cin>>q; while(q--){ int x,y,a,b;cin>>x>>y>>a>>b; if(x>a||y>b){ cout<<"No"<<endl; continue; } if(x==a){ cout<<"Yes"<<endl; continue; } int ok=qua(x,y,a,b); if(ok)cout<<"Yes"<<endl; else cout<<"No"<<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...