제출 #1249749

#제출 시각아이디문제언어결과실행 시간메모리
1249749mr_finCurtains (NOI23_curtains)C++20
9 / 100
1595 ms2100 KiB
#include <bits/stdc++.h>
using namespace std;
using pii = pair<int,int>;
using ll = long long;

int main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int n, m, q;
    cin >> n >> m >> q;

    vector<pii> curtains(m);
    for(int i = 0; i < m; i++){
        cin >> curtains[i].first >> curtains[i].second;
    }
    // 1) Sắp xếp theo l tăng dần
    sort(curtains.begin(), curtains.end());

    while(q--){
        int s, e;
        cin >> s >> e;

        // 2) Tìm vị trí đầu tiên có l_i >= s
        int idx = int(lower_bound(curtains.begin(), curtains.end(),
                           make_pair(s, -1))
                      - curtains.begin());

        // max-heap chứa các r_i của curtains đã "đủ điều kiện" để mở rộng cur
        priority_queue<int> heap;
        int cur = s;
        bool ok = true;

        // 3) Greedy: mỗi bước lấy màn có r lớn nhất trong những màn có l <= cur
        while(cur <= e){
            // Đưa vào heap tất cả curtains[idx] có l <= cur
            while(idx < m && curtains[idx].first <= cur){
                if(curtains[idx].second <= e)
                    heap.push(curtains[idx].second);
                idx++;
            }
            // Nếu không có màn nào mở rộng được, thất bại
            if(heap.empty() || heap.top() < cur){
                ok = false;
                break;
            }
            // Lấy màn mở rộng xa nhất, gạt sang bên phải
            int bestR = heap.top(); 
            heap.pop();
            cur = bestR + 1;
        }

        cout << (ok ? "YES\n" : "NO\n");
    }

    return 0;
}
#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...