中级光能
题目链接: 酷町堂:4217
题目描述 Deion
给出一个区间的集合,请合并所有重叠的区间。
输入描述 Input Deion
第一行,一个整数n
接下来n行, 每行两个整数,x y,表示一个区间(x, y)
输出描述 Output Deion
合并之后的所有区间,每行一个。按左端点从小到大排序
样例输入 Sample Input
4
1 3
2 6
8 10
15 18
样例输出 Sample Output
1 6
8 10
15 18
数据范围及提示 Data Size & Hint
10≤n≤1000,对于每行输入的x、y,0<x<=y<2000
WA70:
#include<iostream>
#include<algorithm>
using namespace std;
struct stu{
int x;
int y;
}a[1005];
bool cmp(stu x,stu y){
if(x.x!=y.x)return x.x<y.x;
return x.y<y.y;
}
int n;
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i].x>>a[i].y;
}
sort(a+1,a+n+1,cmp);
int start=a[1].x;
int end=a[1].y;
for(int i=2;i<=n;i++){
if(a[i].x<end){
if(a[i].y>end){
end=a[i].y;
}
}else{
cout<<start<<" "<<end<<endl;
start=a[i].x;
end=a[i].y;
}
}
cout<<start<<" "<<end;
return 0;
}