#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

bool canMergeIntervals(vector<pair<int, int>>& intervals) {
    sort(intervals.begin(), intervals.end());
    
    int n = intervals.size();
    int left = intervals[0].first;
    int right = intervals[0].second;
    
    for (int i = 1; i < n; i++) {
        if (intervals[i].first <= right) {
            right = max(right, intervals[i].second);
        } else {
            return false;
        }
    }
    
    cout << left << " " << right << endl;
    return true;
}

int main() {
    int n;
    cin >> n;
    
    vector<pair<int, int>> intervals(n);
    for (int i = 0; i < n; i++) {
        cin >> intervals[i].first >> intervals[i].second;
    }
    
    if (!canMergeIntervals(intervals)) {
        cout << "no" << endl;
    }
    
    return 0;
}
``
描述给定 n 个闭区间 a_i;b_i其中i=12n。任意两个相邻或相交的闭区间可以合并为一个闭区间。例如1;2 和 2;3 可以合并为 1;31;3 和 2;4 可以合并为 1;4但是1;2 和 3;4 不可以合并。我们的任务是判断这些区间是否可以最终合并为一个闭区间如果可以将这个闭区间输出否则输出no。输入描述第一行为一个整数n3≤n≤50000。表示输入区间的数量。之后n行在第i行上1≤i≤

原文地址: http://www.cveoy.top/t/topic/iNuq 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录