#include<bits/stdc++.h>

#define inf 0x3f3f3f3f

const int maxn=;

using namespace std;

int n;

struct rook{
int x1,y1;
int x2,y2;
int id;
int resx,resy;
int size(){
return abs(x1 - x2) * abs(x1 - x2) + abs(y1 - y2) * abs(y1 - y2);
}
int width(){
return abs(x1 - x2);
}
int len(){
return abs(y1 - y2);
}
}rooks[maxn+]; int flagx[maxn+]; int flagy[maxn+]; bool cmpx(rook a, rook b){
/*if(a.width() == b.width()){
return a.x1 < b.x1;
}
return a.width() < b.width();*/
//刚开始想错了,这么去贪心,是错的。
/* 反例
* 1111
* 1
* 1
* 1
* 11
*/
if(a.x2 == b.x2){
return a.x1 < b.x1;
}
return a.x2 < b.x2;
}
bool cmpy(rook a, rook b){
/*if(a.len() == b.len()){
return a.y1 < b.y1;
}
return a.len() < b.len();*/
if(a.y2 == b.y2){
return a.y1 < b.y1;
}
return a.y2 < b.y2;
}
bool cmp1(rook a, rook b){
return a.id < b.id;
} int main()
{
while(scanf("%d",&n)!=EOF&&n){
int res = ;
memset(flagx, , sizeof(flagx));
memset(flagy, , sizeof(flagy));
for(int i = ; i < n; ++i){
scanf("%d%d%d%d",&rooks[i].x1,&rooks[i].y1,&rooks[i].x2,&rooks[i].y2);
rooks[i].id = i;
}
sort(rooks, rooks + n, cmpx);
for(int i = ; i < n; ++i){
int flag = ;
for(int j = rooks[i].x1; j <= rooks[i].x2; ++j){
if(!flagx[j]){
flagx[j] = ;
rooks[i].resx = j;
flag = ;
break;
}
}
if(!flag){
res = ;
break;
}
}
if(!res){
sort(rooks, rooks + n, cmpy);
for(int i = ; i < n; ++i){
int flag = ;
for(int j = rooks[i].y1; j <= rooks[i].y2; ++j){
if(!flagy[j]){
flagy[j] = ;
rooks[i].resy = j;
flag = ;
break;
}
}
if(!flag){
res = ;
break;
}
}
}
if(res){
printf("IMPOSSIBLE\n");
} else {
sort(rooks, rooks + n, cmp1);
for(int i = ; i < n; ++i){
printf("%d %d\n",rooks[i].resx,rooks[i].resy);
}
}
}
return ;
}

Uva11134的更多相关文章

  1. uva11134 - Fabled Rooks(问题分解,贪心法)

    这道题非常好,不仅用到了把复杂问题分解为若干个熟悉的简单问题的方法,更是考察了对贪心法的理解和运用是否到位. 首先,如果直接在二维的棋盘上考虑怎么放不好弄,那么注意到x和y无关(因为两个车完全可以在同 ...

  2. UVA-11134 Fabled Rooks 贪心问题(区间贪心)

    题目链接:https://cn.vjudge.net/problem/UVA-11134 题意 在 n*n 的棋盘上,放上 n 个车(ju).使得这 n 个车互相不攻击,即任意两个车不在同一行.同一列 ...

  3. Uva11134 Fabled Rooks

    普通的贪心题. 虽然图是二维的,但可以把横向和纵向分开处理. 将区间按右端点排序,然后从区间左端点到右端点找第一个空位置放棋子即可. /*by SilverN*/ #include<algori ...

  4. 8-4 Fabled Rooks uva11134

    题意:你的任务是在n*n的棋盘上放 n 小于5000 个车 使得任意两个车不互相攻击 且第i个车在一个给定的矩形ri之内  给出该矩形左上角坐标和右下角坐标四个点  必须满足放车的位置在矩形内  边上 ...

  5. 【UVA11134】传说中的车

    横纵坐标互不影响,所以问题转化到一维:在n个区间中每个区间选一个数,n个数都被选一次 将区间按右端点排序,枚举区间,每个区间选最靠左的没被选过的点 #include<algorithm> ...

  6. UVA11134传说中的车(放棋子)

    题意:       给你一个n*n的棋盘,让你在棋盘上放n个棋子,要求是所有棋子不能相互攻击(同行或者同列就会攻击),并且每个棋子都有一个限制,那就是必须在给定的矩形r[i]里,输出每个棋子的位置,s ...

  7. UVA - 11134 Fabled Rooks[贪心 问题分解]

    UVA - 11134 Fabled Rooks We would like to place n rooks, 1 ≤ n ≤ 5000, on a n × n board subject to t ...

  8. UVA 11134 Fabled Rooks(贪心的妙用+memset误用警示)

    题目链接: https://cn.vjudge.net/problem/UVA-11134 /* 问题 输入棋盘的规模和车的数量n(1=<n<=5000),接着输入n辆车的所能在的矩阵的范 ...

  9. UVa 11134 传说中的车

    https://vjudge.net/problem/UVA-11134 题意:在n*n的棋盘上放n个车,使得任意两个车不相互攻击,且第i个车在一个给定的矩形Ri之内.用4个整数xli,yli,xri ...

随机推荐

  1. laravel基础课程---14、表单验证(lavarel如何进行表单验证)

    laravel基础课程---14.表单验证(lavarel如何进行表单验证) 一.总结 一句话总结: lavarel的验证的功能比tp要[简单]且[强大]很多 直接控制器中:添加[规则数组]和[修改提 ...

  2. codeforces 566D D. Restructuring Company(并查集)

    题目链接: D. Restructuring Company time limit per test 2 seconds memory limit per test 256 megabytes inp ...

  3. HihoCoder1653 : 公平分队([Offer收割]编程练习赛39)(贪心)

    描述 小Hi和小Ho在玩一个战争游戏.游戏中2N个战斗单位,其中第i个单位的战斗力是Ai. 现在小Hi和小Ho要各选N个单位组成队伍,当然他们都希望自己队伍的总战斗力越大越好. 为了使分队更加公平,经 ...

  4. MYSQL_与excel结合在excel中用&连接符快速创建表头_20161125

    excel &连接符快速创建表头 复制c列内容 CREATE TABLE A0001restaurant ( #用户明细表 城市 ), 区块 ), 用户ID ), 用户名称 ), 用户地址 ) ...

  5. ACM学习历程—HDU2222 Keywords Search(字典树)

    Keywords Search Description In the modern time, Search engine came into the life of everybody like G ...

  6. 变废为宝,用旧电脑自己DIY组建 NAS 服务器

    i17986 出品,必属佳作! 前言: 老外不喜欢升级硬件和软件,大家应该都知道.我昨天无意看到 FreeNAS 自述文件,这个系统可以让你使用旧的计算机硬件,于是我决定这么做.垃圾电脑你怎么能没有, ...

  7. Cache系列:spring-cache简单三步快速应用ehcache3.x-jcache缓存(spring4.x)

    前言:本项目基于spring4.x构建,使用ehcache3.5.2和JCache(jsr107规范) 一.依赖 除了ehcache和cache-api外,注意引用spring-context-sup ...

  8. DataGrid当列宽超出当前宽度时,没有数据也恒有滚动条

    附件是DataGrid支持滚动条的文件. 具体使用如下: 1)DataGrid使用控件模板 <Setter Property="Template" Value="{ ...

  9. TCP/IP 详解卷一之 HTTP协议

    HTTP协议 简介 超文本传输协议(HypertextTransfer Protocol,简称HTTP)是应用层协议.HTTP 是一种请求/响应式的协议,即一个客户端与服务器建立连接后,向服务器发送一 ...

  10. 用OpenLayers开发地图应用

    项目背景 最近有一个使用全球地图展示数据的项目,用地图展示数据本身没什么难度,但出于安全和保密的考虑,甲方单位要求项目不能连接外网,只能在内网使用,也就是说,我们不得不在内网中部署一个地图服务器,在这 ...