UVA11134FabledRooks

来源:互联网 发布:淘宝客服安抚顾客语 编辑:程序博客网 时间:2024/05/19 13:59
//UVA11134FabledRooks#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>using namespace std;const int MAXN = 5000 + 10;int xl[MAXN], yl[MAXN], xr[MAXN], yr[MAXN], x[MAXN], y[MAXN];int n;bool solve(int* a, int* b, int* c) {fill(c, c + n, -1);for(int col = 1; col <= n; col++) {//先确定充填的行(列) int rook = -1;int minb = n + 1;for(int i = 0; i < n; i++) {if(a[i] <= col && c[i] < 0 && b[i] < minb) {//贪心 rook = i; minb = b[i];}}if(b[rook] < col) return false;c[rook] = col;}return true;}int main() {while(scanf("%d", &n) == 1 && n) {for(int i = 0; i < n; i++) scanf("%d%d%d%d", &xl[i], &yl[i], &xr[i], &yr[i]);if(solve(xl, xr, x) && solve(yl, yr, y)) {for(int i = 0; i < n; i++) printf("%d %d\n", x[i], y[i]);}else printf("IMPOSSIBLE\n");}return 0;} /*81 1 2 25 7 8 82 2 5 52 2 5 56 3 8 66 3 8 56 3 8 83 6 7 881 1 2 25 7 8 82 2 5 52 2 5 56 3 8 66 3 8 56 3 8 83 6 7 80*/

原创粉丝点击