由于它是平面选点,可以将它确定矩形的对角坐标x1,y1,x2,y2,,拆成x轴坐标x1,y1 和y轴坐标x2,y2;
然后分别对x轴和y轴区间选点,只要两个都可以选完,那就说明在它确定的平面上也是可以选出的。需注意输出时还要还原顺序输出。
import java.util.*;
class weizhi implements Comparable<weizhi>
{
int x,y,id;
public int compareTo(weizhi A)
{
if(this.y<A.y) return -1;
else if(this.y>A.y) return 1;
else
{
if(this.x<A.x) return -1;
else return 1;
}
}
}
public class Main
{ public static int n,bzx[]=new int[5005],bzy[]=new int[5005];
static weizhi zbx[]=new weizhi[5005],zby[]=new weizhi[5005],ans[]=new weizhi[5005];
public static void main(String[] args)
{
Scanner in=new Scanner(System.in);
int i,j; boolean flag = true;
while(in.hasNextInt())
{
n=in.nextInt();
if(n==0) break;
for(i=0;i<n;i++)
{
zbx[i]=new weizhi();
zby[i]=new weizhi();
zbx[i].x=in.nextInt();
zby[i].x=in.nextInt();
zbx[i].y=in.nextInt();
zby[i].y=in.nextInt();
zbx[i].id=i; zby[i].id=i;
}
Arrays.sort(zbx,0,n);
Arrays.sort(zby,0,n);
for(i=0;i<5005;i++) {bzx[i]=0;bzy[i]=0;}
for(i=0;i<n;i++)
{ flag=true;
for(j=zbx[i].x;j<=zbx[i].y;j++)
{
if(bzx[j]==0) {bzx[j]=1; zbx[i].y=zbx[i].id; zbx[i].x=j;flag=false; break;}
}
if(flag) {System.out.println("IMPOSSIBLE");break;}
flag=true;
for(j=zby[i].x;j<=zby[i].y;j++)
{
if(bzy[j]==0) {bzy[j]=1; zby[i].y=zby[i].id; zby[i].x=j; flag=false; break;}
}
if(flag) {System.out.println("IMPOSSIBLE");break;}
}
if(!flag)
{
Arrays.sort(zbx,0,n); Arrays.sort(zby,0,n);
for(i=0;i<n;i++)
{
System.out.println(zbx[i].x+" "+zby[i].x);
}
}
}
}
}