ans

wangruihao 2024-01-13 14:02:37 3 返回题目

#include<bits/stdc++.h>
using namespace std;
int n;
struct node{
	int b,e;
}a[1000010];
bool cmp(node x,node y){
	return x.b<y.b;//按左端点排序
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i].b>>a[i].e;
	}
	sort(a+1,a+1+n,cmp);
	int l=a[1].b,r=a[1].e;
	for(int i=2;i<=n;i++){
		if(a[i].b<=r) r=max(r,a[i].e);//如果a[i]的左端点<r,就合并区间
		else{//否则为独立区间,输出左端点与右端点
			cout<<l<<" "<<r<<"\n";
			l=a[i].b,r=a[i].e;
		}
	}
	cout<<l<<" "<<r<<"\n";
	return 0;
}
{{ vote && vote.total.up }}