1 条题解

  • 0
    @ 2025-11-12 15:38:23

    按题意直接模拟即可。

    AC code:

    #include <bits/stdc++.h>
    using namespace std;
    typedef pair<int, int> pii;
    
    int main() {
        int n, k;
        cin >> n >> k;
        vector<pii> in(n);
        for (int i = 0; i < n; i++) {
            cin >> in[i].first >> in[i].second;
        }
        if (n == 0) {
            cout << 1 << " " << k << endl;
            return 0;
        }
        sort(in.begin(), in.end());
        vector<pii> m;
        m.push_back(in[0]);
        for (int i = 1; i < n; i++) {
            pii& last = m.back();
            if (in[i].first <= last.second) {
                last.second = max(last.second, in[i].second);
            } else {
                m.push_back(in[i]);
            }
        }
        int prev = 1;
        for (const auto& in : m) {
            int l = in.first;
            int r = in.second;
            if (prev <= l - 1) {
                cout << prev << " " << l - 1 << endl;
            }
            prev = r + 1;
            if (prev > k) {
                break;
            }
        }
        if (prev <= k) {
            cout << prev << " " << k << endl;
        }
        return 0;
    }
    
    • 1

    信息

    ID
    147
    时间
    1000ms
    内存
    128MiB
    难度
    3
    标签
    递交数
    7
    已通过
    3
    上传者