#include <algorithm>
#include <iostream>
#include <vector>
#include <climits>
using namespace std;
struct Interval {
int start;
int end;
Interval(int s, int e) : start(s), end(e) {}
};
bool compareByEnd(const Interval& a, const Interval& b) {
return a.end < b.end;
}
vector<Interval> intervalCover(vector<Interval>& intervals) {
vector<Interval> result;
sort(intervals.begin(), intervals.end(), compareByEnd);
int end = INT_MIN;
for (auto& interval : intervals) {
if (interval.start > end) {
result.push_back(interval);
end = interval.end;
}
}
return result;
}
int main() {
vector<Interval> intervals = {{1, 4}, {2, 6}, {5, 7},
{8, 11}, {9, 12}, {10, 14}};
vector<Interval> result = intervalCover(intervals);
cout << "选择区间为: ";
for (auto& interval : result) {
cout << "[" << interval.start << ", " << interval.end << "] ";
}
cout << endl;
return 0;
}