1. 程式人生 > >【Intervals POJ 區間覆蓋】

【Intervals POJ 區間覆蓋】

#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);
             }
    }