Submission #392260

#TimeUsernameProblemLanguageResultExecution timeMemory
392260keta_tsimakuridzeTrampoline (info1cup20_trampoline)C++14
100 / 100
1097 ms161540 KiB
#include<bits/stdc++.h> #define f first #define int long long #define s second using namespace std; const int N=4e5+5,mod=1e9+7,Inf=1e15; int t,tree[25*N],le_[25*N],ri_[25*N],cur,root[N],n,R,C; pair<int,int>p[N],a[N]; map<int,int> ind; set<pair<int,int> > s[N]; void build(int u,int l,int r){ tree[u]=Inf; if(l==r) { return; } cur++; le_[u] = cur; cur++; ri_[u] = cur; int mid=(l+r)/2; build(le_[u],l,mid); build(ri_[u],mid+1,r); } void update(int u,int ind,int l,int r,int val){ if(l>ind || r<ind) return; if(l==r){ tree[cur]=val; return; } int mid=(l+r)/2,x=cur; le_[x]=le_[u]; ri_[x]=ri_[u]; cur++; if(ind<=mid) { le_[x]=cur; } else ri_[x]=cur; update(le_[u],ind,l,mid,val); update(ri_[u],ind,mid+1,r,val); tree[x] = min(tree[le_[x]],tree[ri_[x]]); } int getans(int u,int ind,int l,int r){ if(l>ind || r<ind) return Inf; if(l==r) { return tree[u]; } int mid=(l+r)/2; return min(getans(le_[u],ind,l,mid),getans(ri_[u],ind,mid+1,r)); } main(){ ios_base::sync_with_stdio(false),cin.tie(0),cout.tie(0); // t=1; cin>>R>>C>>n; swap(R,C); for(int i=1;i<=n;i++){ cin>>p[i].f>>p[i].s; } sort(p+1,p+n+1); for(int i=1;i<=n;i++){ a[i].f = p[i].f; } int idx = 0; sort(a+1,a+n+1); for(int i=1;i<=n;i++){ if(a[i].f!=a[i-1].f) idx++; ind[a[i].f] = idx; } root[n+1]=1; cur=1; build(1,1,n); for(int i=n;i>=1;i--){int bef=1; if(s[ind[p[i].f+1]].upper_bound({p[i].s,0}) != s[ind[p[i].f+1]].end()) { bef = root [(*s[ind[p[i].f+1]].upper_bound({p[i].s,0})).s ]; } cur++;root[i] =cur; update(bef,ind[p[i].f],1,n,p[i].s); s[ind[p[i].f]].insert({p[i].s,i}); } cin>>t; while(t--){ int x,y,x2,y2; cin>>x>>y>>x2>>y2; swap(x,y); swap(x2,y2); if(y==y2 && x<=x2) cout<<"Yes"<<" "; else if(s[ind[y]].upper_bound({x,0})==s[ind[y]].end()){ cout<<"No"<<" "; } else { int aft =( *s[ind[y]].upper_bound({x,0})).s; if(getans(root[aft],ind[y2-1],1,n) <= x2) cout<<"Yes"<< " "; else cout<<"No"<< " "; } } }

Compilation message (stderr)

trampoline.cpp:50:7: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   50 |  main(){
      |       ^
#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...