题目链接:https://www.acwing.com/problem/content/805/
代码:
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+5;
struct node{
int l;
int r;
}q[N],a[N];
bool cmp(node a,node b){
return a.l<b.l;
}
int main(){
int n,i,ans=1;
cin>>n;
for(i=0;i<n;i++){
cin>>q[i].l;
cin>>q[i].r;
}
sort(q,q+n,cmp);
int right=q[0].r,left=q[0].l;
for(i=1;i<n;i++){
if(q[i].l>right){
a[ans].l=left;
a[ans].r=right;
ans++;
left=q[i].l;
right=q[i].r;
}
else{
right=max(right,q[i].r);
}
}
a[ans].l=left;
a[ans].r=right;
cout<<ans<<endl;//合并后区间个数
//输出合并后的区间
for(i=1;i<=ans;i++){
cout<<"["<<a[i].l<<","<<a[i].r<<"]"<<endl;
}
}
提问于12天前
241