Submission #1199755

#TimeUsernameProblemLanguageResultExecution timeMemory
1199755ofozCurtains (NOI23_curtains)C++20
24 / 100
1595 ms30788 KiB
#include <bits/stdc++.h>
using namespace std;
#define vi vector<int>
#define pi pair<int, int>
#define ppi pair<pair<int, int>, int>

void solve() {
    int n, m, q;
    cin >> n >> m >> q;

    vector<pair<int, int>> seg;
    for (int i = 0; i < m; ++i) {
        int a, b;
        cin >> a >> b;
        --a; --b;
        seg.emplace_back(a, b);
    }
    sort(seg.begin(), seg.end());

    vector<int> mn(n, INT32_MAX);
    vector<ppi> queries;
    for (int i = 0; i < q; ++i) {
        int a, b;
        cin >> a >> b;
        --a; --b;
        queries.push_back({{a, b}, i});
    }
    sort(queries.begin(), queries.end());

    
    vector<string> res(q);

    while (!queries.empty()) {
        pi p;
        int a, b, idx;
        tie(p, idx) = queries.back();
        tie(a, b) = p;
        queries.pop_back();
        
        while (!seg.empty() && seg.back().first >= a) {
            int aa, bb;
            tie(aa, bb) = seg.back();
            seg.pop_back();
            for (int j = aa; j <= bb; ++j) {
                mn[j] = min(mn[j], bb);
            }
        }

        int mx = numeric_limits<int>::min();
        for (int j = a; j <= b; ++j) {
            mx = max(mx, mn[j]);
        }

        res[idx] = (mx <= b) ? "YES" : "NO";
    }

    for (const auto& ans : res) {
        cout << ans << '\n';
    }
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    solve();
    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...