Shaolin

Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)
Total Submission(s): 4370    Accepted Submission(s): 1883

Problem Description

Shaolin temple is very famous for its Kongfu monks.A lot of young men go to Shaolin temple every year, trying to be a monk there. The master of Shaolin evaluates a young man mainly by his talent on understanding the Buddism scripture, but fighting skill is also taken into account.
When
a young man passes all the tests and is declared a new monk of Shaolin,
there will be a fight , as a part of the welcome party. Every monk has
an unique id and a unique fighting grade, which are all integers. The
new monk must fight with a old monk whose fighting grade is closest to
his fighting grade. If there are two old monks satisfying that
condition, the new monk will take the one whose fighting grade is less
than his.
The master is the first monk in Shaolin, his id is 1,and
his fighting grade is 1,000,000,000.He just lost the fighting records.
But he still remembers who joined Shaolin earlier, who joined later.
Please recover the fighting records for him.

Input

There are several test cases.
In each test case:
The
first line is a integer n (0 <n <=100,000),meaning the number of
monks who joined Shaolin after the master did.(The master is not
included).Then n lines follow. Each line has two integer k and g,
meaning a monk's id and his fighting grade.( 0<= k ,g<=5,000,000)
The monks are listed by ascending order of jointing time.In other words, monks who joined Shaolin earlier come first.
The input ends with n = 0.

Output

A
fight can be described as two ids of the monks who make that fight. For
each test case, output all fights by the ascending order of happening
time. Each fight in a line. For each fight, print the new monk's id
first ,then the old monk's id.

Sample Input

3
2 1
3 3
4 2
0

Sample Output

2 1
3 2
4 2

题目大意:

少林寺有n+1个和尚,他们都有一个独有的编号和战斗力值,当一个年轻人通过所有考试并被宣布为少林的新僧人时,将会有一场战斗,作为欢迎的一部分。新和尚必须与一位战斗等级最接近他的战斗等级的老和尚战斗。如果有两个老僧人满足这个条件,新僧侣将采取战斗等级低于他的僧侣与他对打。现在保证输入是按照编号顺序升序输入的,要求按顺序输出每一组战斗的双方编号,先输出新和尚的后输出老和尚的。(第一个和尚编号是1,战斗力是1000000000)

题目分析:

这个题充分体现出了map的优势,因为map存储的时候是按照关键字升序存储的,所以如果按照战斗力值作为关键字建立map的话,找到此战力值的前驱和后继就是可能要与新和尚对打的老和尚了。

代码:

#include<bits/stdc++.h>

using namespace std;
map<int,int>a;
int n,id,level,i;
int main()
{
while(scanf("%d",&n)!=EOF,n!=)
{
a.clear();
a[]=;
for(i=;i<=n;i++)
{
cin>>id>>level;
a[level]=id;
map<int,int>::iterator p=a.find(level);
if(p==a.begin())
printf("%d %d\n",id,(++p)->second);
else if(p==a.end())
printf("%d %d\n",id,(--p)->second);
else if((abs((++p)->first)-(--p)->first)<abs((--p)->first-(++p)->first))
printf("%d %d\n",id,(++p)->second);
else
printf("%d %d\n",id,(--p)->second);
}
}
}

HDU 4585 Shaolin (STL map)的更多相关文章

  1. HDU 4585 Shaolin(STL map)

    Shaolin Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit cid= ...

  2. HDU 4585 Shaolin (STL)

    Shaolin Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Sub ...

  3. HDU 1263 水果 (STL map)

    水果 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submissi ...

  4. HDU 4585 Shaolin(Treap找前驱和后继)

    Shaolin Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total Su ...

  5. HDU 4585 Shaolin(水题,STL)

    Shaolin Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Sub ...

  6. HDU 2094 产生冠军(STL map)

    产生冠军 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  7. hdu 4858 项目管理(STL集装箱)

    项目管理 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  8. CodeForces 501B Misha and Changing Handles(STL map)

    Misha hacked the Codeforces site. Then he decided to let all the users change their handles. A user ...

  9. 【UVA】10391 Compound Words(STL map)

    题目 题目     分析 自认已经很简洁了,虽说牺牲了一些效率     代码 #include <bits/stdc++.h> using namespace std; set <s ...

随机推荐

  1. 记Springcloud Config Service整合gitlab一坑

    spring.cloud.config.server.git.uri=http://ip/***/configserver.git必须加上.git

  2. 2019春Python程序设计练习5(0416--0422)

    6-1 6-1.使用函数求特殊a串数列和 (30 分)   给定两个均不超过9的正整数a和n,要求编写函数fn(a,n) 求a+aa+aaa++⋯+aa⋯aa(n个a)之和,fn须返回的是数列和 函数 ...

  3. JavaScript分支结构Ⅱ—switch-case

    ㈠switch-case 使用场合 优先用于等值判断的条件中   ㈡switch-case 语句执行逻辑 switch case语句是一种特殊的分支结构,可以根据一个表达式的不同取值,从不同的程序入口 ...

  4. 信息提示框:MessageBox

    一 函数原型及参数 function MessageBox(hWnd: HWND; Text, Caption: PChar; Type: Word): Integer;   1.参数列表    hW ...

  5. CentOS7 服务器上如何安装python3

    1.官网下载python3的源码包 网址:https://www.python.org/ 进去之后点击导航栏的Downloads,也可以鼠标放到Downloads上弹出菜单选择Source code, ...

  6. Housewife Wind

    Housewife Wind 参考博客:POJ2763 Housewife Wind(树剖+线段树) 差不多是直接套线段树+树剖的板子,但是也有一些需要注意的地方 建树: void build() { ...

  7. Apicloud_(项目)网上书城01_前端搭建

    [本文皆在记录自己开发Apicloud项目过程,不具备教学水平性文章] 参考书籍<30天App开发从0到1> Apicloud_(项目)网上书城01_前端页面开发 传送门 Apicloud ...

  8. Android学习_7/23

    1.        在活动中使用Menu 1)        什么是Menu? 2)        怎么实现? step1:res目录下创建Menu resource file,使用<item… ...

  9. 计算机网络&http学习笔记持续整理

    http不常见状态码: 204: 请求处理成功,但是没有资源可返回. 206: 只返回请求资源的某一部分(客户端只想请求某一部分),响应报文中包含由Content-Range指定范围的实体内容. 30 ...

  10. EBS 显示主页面的工作列表和主菜单

    EBS环境: R12.1.3 问题描述:如果系统的“个性化页”做了设置,可能出现登录系统后,如果下图红框中的 主菜单和工作列表没有显示的情况,如果需要重新显示“主菜单”和“工作列表”,可参考以下操作 ...