Submission #1146632

#TimeUsernameProblemLanguageResultExecution timeMemory
1146632monostackCurtains (NOI23_curtains)C++20
44 / 100
1536 ms60944 KiB
#include<bits/stdc++.h>
using namespace std;
#define int long long
 
int32_t main(){
    ios_base::sync_with_stdio(0);
    cin.tie(NULL);
    int n,m,q; cin>>n>>m>>q;
    bool c4 = true;
    vector<set<int>> lst(n);
    vector<int> str(n,1e18);
    for(int i = 0; i < m; i++){
        int a,b; cin>>a>>b;
        lst[b-1].insert(a-1);
        str[a-1] = min(str[a-1],b-1);
    }
    vector<pair<int,int>> queries(q);
    for(int i = 0; i < q; i++){
        int a,b; cin>>a>>b;
        if(a != 1) c4 = false;
        queries[i] = {a-1,b-1};
    }
    if(c4){
        vector<bool> can(n,0);
        int cur_c = 0;
        for(int j = str[0]; j < n; j++){
            if(lst[j].empty()) continue;
            auto p = lst[j].begin();
            if(p == lst[j].end() || *p > cur_c + 1) continue;
            cur_c = j;
            can[j] = true;
        }
        for(int i = 0; i < q; i++){
            if(can[queries[i].second]) cout<<"YES"<<'\n';
            else cout<<"NO"<<'\n';
        }
    }else{
        vector<vector<bool>> can(n, vector<bool>(n,0));
        for(int i = 0; i < n; i++){
            if(str[i] == 1e18) continue;
            int st = str[i], cur_c = i;
            for(int j = str[i]; j < n; j++){
                auto p = lst[j].lower_bound(i);
                if(p == lst[j].end() || *p > cur_c+1) continue;
                cur_c = j;
                can[i][j] = true;
            }
        }
        for(int i = 0; i < q; i++){
            if(can[queries[i].first][queries[i].second]) cout<<"YES"<<'\n';
            else cout<<"NO"<<'\n';
        }
    }
    
}
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...