#pragma warning(disable:4996)
#include<cstdio>
#include<cstring>
#include<string>
#include<cmath>
#include<vector>
#include<algorithm>
#include<iostream>
#include<time.h>
#include<map>
#include<set>
#include<sstream>
using namespace std;
bool solve(int *a,int *b, int *c,int n)
{
fill(c, c + n, -1);
for (int col = 1; col <=n; col++)
{
int start = -1, end = n + 1;
for (int i = 0; i <n; i++)
{
if (c[i] == -1 && b[i] <end&&a[i] <=col)
{
start = i;
end = b[i];
}
}
if (start == -1||col>end)
return false;
else
c[start] = col;
}
return true;
}
const int maxn = 5000 + 5;
int n;
int x1[maxn], yl[maxn], x2[maxn], y2[maxn];
int x[maxn], y[maxn];
int main()
{
while (scanf("%d", &n) == 1 && n)
{
for (int i = 0; i < n; i++)
scanf("%d%d%d%d", &x1[i], &yl[i], &x2[i], &y2[i]);
if (solve(x1, x2, x, n)
&& solve(yl, y2, y, n))
for (int i = 0; i < n; i++)
printf("%d %d\n", x[i], y[i]);
else
printf("IMPOSSIBLE\n");
}
return 0;
}
UVA11134
最新推荐文章于 2021-05-17 22:33:07 发布