3 条题解

  • 0
    @ 2025-5-16 20:49:30
    #include <iostream>
    #include <vector>
    #include <algorithm>
    using namespace std;
    struct Interval {
        int left;
        int right;
        Interval(int l, int r) : left(l), right(r) {}
    };
    bool compareIntervals(const Interval& a, const Interval& b) {
        return a.left < b.left;
    }
    
    int main() {
        int n;
        cin >> n;
        vector<Interval> intervals;
        for (int i = 0; i < n; ++i) {
            int a, b;
            cin >> a >> b;
            intervals.emplace_back(a, b);
        }
        sort(intervals.begin(), intervals.end(), compareIntervals);
        int start = intervals[0].left;
        int end = intervals[0].right;
        bool canMerge = true;
    ``````cpp
    for (int i = 1; i < n; ++i) {
            if (intervals[i].left <= end) {
                end = max(end, intervals[i].right);
            } else {
                canMerge = false;
                break;
            }
        }
    
        if (canMerge) {
            cout << start << " " << end << endl;
        } else {
            cout << "no" << endl;
        }
    
        return 0;
    }
    

    信息

    ID
    370
    时间
    1000ms
    内存
    256MiB
    难度
    8
    标签
    (无)
    递交数
    74
    已通过
    14
    上传者