#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