#include <iostream>
#include <algorithm>
using namespace std;
struct Range {
int from;
int to;
};
bool compare (Range x, Range y){
if (x.from != y.from){
return x.from < y.from;
}else{
return x.to < y.to;
}
}
Range r[101];
int main () {
int L, M;
while (cin >> L >> M){
for (int i = 0; i < M; i++){
cin >> r[i].from >> r[i].to;
}
sort (r, r + M, compare);
int tree = L + 1;
int begin = r[0].from;
int end = r[0].to;
for (int i = 0; i < M; i++){
if (i == M - 1){
tree -= end - begin + 1;
}else{
if (r[i + 1].from <= end){
if (r[i + 1].to > end){
end = r[i + 1].to;
}
}else{
tree -= end - begin + 1;
begin = r[i + 1].from;
end = r[i + 1].to;
}
}
}
cout << tree << endl;
}
return 0;
}
自己写的一直出错
参照的答案

京公网安备 11010502036488号