输入样例:
5
1 2
2 4
5 6
7 8
7 9
输出样例:
3
# include <iostream>
# include <algorithm> //使用了pair
# include <vector>
using namespace std;
typedef pair<int ,int > PII;
const int N = 100010;
vector <PII> segs;
int merge(vector<PII> &segs)
{
vector <PII> res;//储存结果
sort(segs.begin(),segs.end());
int st=-2e9,ed=-2e9;
for(auto seg : segs)
{
if(ed<seg.first)//当前与序列之间无交集
{
//排除输入的是空序列情况,非空则将es~ed放入res
if(ed!=-2e9) res.push_back({st,ed});
//同时更新操作区间
st=seg.first,ed=seg.second;
}
//有交集,则将ed更新为更大值
else ed=max(ed,seg.second);
}
//排除输入的是空序列情况
if(st!=-2e9) res.push_back({st,ed});
segs = res;//将结果存回segs中
}
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++)
{
int l,r;
cin>>l>>r;
segs.push_back({l,r});
}
merge(segs);
/*
for(auto seg : segs)
printf("%d %d\n",seg.first,seg.second);
*/
cout<<segs.size()<<endl;
return 0;
}