給定?NN?個閉區間?[ai,bi][ai,bi],請你在數軸上選擇盡量少的點,使得每個區間內至少包含一個選出的點。
輸出選擇的點的最小數量。
位于區間端點上的點也算作區間內。
輸入格式
第一行包含整數?NN,表示區間數。
接下來?NN?行,每行包含兩個整數?ai,biai,bi,表示一個區間的兩個端點。
輸出格式
輸出一個整數,表示所需的點的最小數量。
數據范圍
1≤N≤1051≤N≤105,
?109≤ai≤bi≤109?109≤ai≤bi≤109
輸入樣例:
3
-1 1
2 4
3 5
輸出樣例:
2
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+10;?
struct jb{
?? ?int l,r;
?? ?bool operator<(const jb &w)const
?? ?{
?? ??? ?return r<w.r;
?? ?}
?? ?
}range[N];?
int main ()
{
?? ?int n;
?? ?scanf("%d",&n);
?? ?for(int i=0;i<n;i++)
?? ?{
?? ??? ?scanf("%d%d",&range[i].l,&range[i].r);
?? ?}
?? ?sort(range,range+n);
?? ?int res=0;
?? ?int end=INT_MIN;
?? ?for(int i=0;i<n;i++)
?? ?{
?? ??? ?if(end<range[i].l)
?? ??? ?{
?? ??? ??? ?res++;
?? ??? ??? ?end=range[i].r;
?? ??? ?}
?? ?}
?? ?cout<<res<<endl;
?? ?return 0;
}