按题意直接模拟即可。

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;
}