#include<cstdio>
#include<cstring>
int x1[5100],y1[5100],x2[5100],y2[5100],d1[5100],d2[5100];
int vis[5100];
int main()
{
int n;
while(~scanf("%d",&n)&&n)
{
int flag=0;
for(int i=0;i<n;i++)
scanf("%d%d%d%d",&x1[i],&y1[i],&x2[i],&y2[i]);
memset(d1,-1,sizeof(d1));
for(int i=1;i<=n;i++)
{
int lo=-1,r=n+1;
for(int j=0;j<n;j++)
if(d1[j]<0&&x2[j]<r&&i>=x1[j])
{
lo=j;
r=x2[j];
}
if(lo==-1||i>r)
{
flag=1;
break;
}
d1[lo]=i;
}
if(flag)
printf("IMPOSSIBLE\n");
else
{
memset(d2,-1,sizeof(d2));
for(int i=1;i<=n;i++)
{
int lo=-1,r=n+1;
for(int j=0;j<n;j++)
if(d2[j]<0&&y2[j]<r&&i>=y1[j])
{
lo=j;
r=y2[j];
}
if(lo==-1||i>r)
{
flag=1;
break;
}
d2[lo]=i;
}
if(flag)
printf("IMPOSSIBLE\n");
else
{
for(int i=0;i<n;i++)
printf("%d %d\n",d1[i],d2[i]);
}
}
}
}
uva 11134 棋盘放车,每个车游个放置范围
最新推荐文章于 2019-12-14 15:27:59 发布