题目链接:http://poj.org/problem?id=1089
#include<cstdio>
#include<algorithm>
#define max(a,b) (a>b?a:b)
using namespace std;
struct point{
int x,y;
}a[50005];
int cmp(point a,point b){
if(a.x==b.x)
return a.y<b.y;
return a.x<b.x;
}
int main(){
int n;
while(~scanf("%d",&n)){
for(int i=0;i<n;i++)
scanf("%d%d",&a[i].x,&a[i].y);
sort(a,a+n,cmp);
int ta=a[0].x,tb=a[0].y;
for(int i=1;i<n;i++){
if(tb>=a[i].x){
tb=max(a[i].y,tb);
}
else{
printf("%d %d\n",ta,tb);
ta=a[i].x;
tb=a[i].y;
}
}
printf("%d %d\n",ta,tb);
}
}