#include <iostream>
#include <cstring>
#include <cstdio>
#include <queue>
#include <cmath>
#include <algorithm>
#include <vector>
using namespace std;
#define mem(f, x) memset(f,x,sizeof(f))
#define sca(x) scanf("%d", &x)
#define sca2(x,y) scanf("%d%d",&x,&y)
#define sca3(x,y,z) scanf("%d%d%d",&x,&y,&z)
#define scl(x) scanf("%lld",&x);
#define pri(x) printf("%d\n", x)
#define prl(x) printf("%lld\n",x);
#define ll long long
const int N=300010;
int n,m,x;
int a[N],s[N],b[N];
typedef pair<int ,int > PII;
struct node{
int l,r;
}e[111111];
bool cmp(node a,node b){
if(a.l!=b.l)
return a.l<b.l;
else
return a.r>b.r;
}
int main(){
cin>>n;
for(int i=0;i<n;i++){
cin>>e[i].l>>e[i].r;
}
sort(e,e+n,cmp);
int res=1;
int rr=e[0].r;
for(int i=1;i<n;i++){
if(e[i].l<=rr)
{
rr=max(rr,e[i].r);
}
else
{
res++;
rr=e[i].r;
}
}
cout<<res<<endl;
return 0;
}
给定 nn 个区间 [li,ri][li,ri],要求合并所有有交集的区间。
注意如果在端点处相交,也算有交集。
输出合并完成后的区间个数。
例如:[1,3]和[2,6]可以合并为一个区间[1,6]。
输入格式
第一行包含整数n。
接下来n行,每行包含两个整数 l 和 r。
输出格式
共一行,包含一个整数,表示合并区间完成后的区间个数。
数据范围
1≤n≤1000001≤n≤100000,
−109≤li≤ri≤109−109≤li≤ri≤109
输入样例:
5
1 2
2 4
5 6
7 8
7 9
输出样例:
3