제출 #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...