开荒100%AC,点个赞吧
2025-07-14 19:21:14
发布于:上海
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
struct Interval {
long long a, b;
};
bool compareIntervals(const Interval& i1, const Interval& i2) {
if (i1.a != i2.a)
return i1.a < i2.a;
return i1.b < i2.b;
}
int main() {
int n;
cin >> n;
vector<Interval> intervals(n);
for (int i = 0; i < n; ++i) {
cin >> intervals[i].a >> intervals[i].b;
}
sort(intervals.begin(), intervals.end(), compareIntervals);
if (n == 0) {
cout << 0 << endl;
return 0;
}
long long currentStart = intervals[0].a;
long long currentEnd = intervals[0].b;
long long totalLength = 0;
for (int i = 1; i < n; ++i) {
if (intervals[i].a <= currentEnd) {
currentEnd = max(currentEnd, intervals[i].b);
} else {
totalLength += currentEnd - currentStart;
currentStart = intervals[i].a;
currentEnd = intervals[i].b;
}
}
totalLength += currentEnd - currentStart;
cout << totalLength << endl;
return 0;
}
这里空空如也
有帮助,赞一个