给定 𝑁 个闭区间 [𝑎𝑖,𝑏𝑖],请你在数轴上选择若干区间,使得选中的区间之间互不相交(包括端点)。
输出可选取区间的最大数量。
输入格式
第一行包含整数 𝑁,表示区间数。
接下来 𝑁 行,每行包含两个整数 𝑎𝑖,𝑏𝑖,表示一个区间的两个端点。
输出格式
输出一个整数,表示可选取区间的最大数量。
数据范围
1≤𝑁≤,
−≤𝑎𝑖≤𝑏𝑖≤
输入样例:
3
-1 1
2 4
3 5
输出样例:
2
代码:
cpp
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int N = 100010;
int n,l,r;
vector<pair<int,int>> Interval;
int main(){
cin>>n;
for(int i = 0;i < n;i ++){
cin>>l>>r;
Interval.push_back({r,l});
}
sort(Interval.begin(),Interval.end());
int res = 0, RightEnd = -2e9;
for(int i = 0;i < n;i ++){
int left = Interval[i].second;
int right = Interval[i].first;
if(left > RightEnd){
res ++;
RightEnd = right;
}
}
cout<<res<<endl;
return 0;
}