给出n个区间,求出合并后的区间个数
#include<bits/stdc++.h>
using namespace std;
vector<pair<int,int>>seg;
int n;
void merge(vector<pair<int,int>>&seg)
{
vector<pair<int,int>>res;
int st=-2e9,ed=-2e9;//规定边界
sort(seg.begin(),seg.end());//把左边界排序,后续只需比较右边界
for(auto item:seg)
{
if(ed<item.first)//需要更新新的区间
{
if(st!=-2e9)res.push_back({st,ed});
st=item.first,ed=item.second;
}
else//需要更新目前处理的区间终点
{
ed=max(ed,item.second);
}
}
if(st!=-2e9)res.push_back({st,ed});//将最后一个区间加入数组
seg=res;
}
int main()
{
cin>>n;
for(int i=0;i<n;i++)
{
int l,r;scanf("%d%d",&l,&r);
seg.push_back({l,r});
}
merge(seg);
cout<<seg.size();
}