给出n个闭区间(可理解为实数区间)。求用最少的非相交的闭区间表示这n个闭区间,升序排序。
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
//抄博友好程序 谢谢博友程序
struct nod{
int l;
int r;
};
bool cmp(nod a,nod b)
{
return a.l<b.l;
}
int main()
{
int n;
cin>>n;
vector<nod> ve;
for(int i=0;i<n;i++)
{
nod t;
cin>>t.l>>t.r;
ve.push_back(t);
}
sort(ve.begin(),ve.end(),cmp);
int left,right;
left=ve[0].l;
right=ve[0].r;
for(int i=1;i<ve.size();i++)
{
if(right>=ve[i].l)
{
if(ve[i].r>right)//抄博友
right=ve[i].r;
}else
{
cout<<left<<" "<<right<<endl;
left=ve[i].l;
right=ve[i].r;
}
}
cout<<left<<" "<<right<<endl;
return 0;
}