找礼物[find.pas/find.c/find.cpp]

【问题描述】

       新年到了,突然间,就在那美丽的一霎那,你好友和你(K个人)的周围满是礼物,你发扬你帅气的风格,让你的好友先拿,但是每个人只能拿当前离自己最近的礼物[当然如果有并列的多个礼物离你的距离相等(精确到小数后四位,所有运算均为去尾),这些礼物就都属于这个人]。现在你们所在的位置是原点(0,0),每个礼物的位置用坐标表示。现在告诉你每个礼物的坐标,还有每个礼物是谁送的。要你找出你的礼物离你多远,你能拿到多少礼物,这些礼物是谁送的。如果你拿不到礼物,请输出“555…”

【输入】

第一行:N 和 K 分别表示礼物的个数和人数。

第二到N+1行:每行先是赠送礼品人的姓名,然后是礼物的坐标(x,y)。

数据间空格分割

【输出】

第一行: D 和 U 表示礼物距你多远(只要去尾后的整数)和你能拿到多少礼物。

第二到U+1行:每行一个人名,表示送礼的人。<按照输入的顺序输出>

【输入输出样例】

样例1:

输入(find.in):

5 2

Jason 1 1

Herry 4 4

Patty 3 4

Tom 2 10

Petter 5 10

 

输出(find.out):

5 1

Patty

 

 

样例2:

输入(find.in):

6 2

Jim 1 –1

Flord 3 –3

Joseph –1 1

Steve 3 3

Tiger 2 –10

User 10 20

输出(find.out):

4 2

Flord

Steve

样例二说明:jim 和 joseph 的礼品是等距的距离最短,被第一个人拿走,剩下的四个人中flord和steve的礼物也是等距的计算得到距离为4。

【数据范围】

对于30%的数据 K≤N≤1000

对于所有的数据 K≤N≤100000

所有的坐标绝对值小于106         

Solution

傻逼题,计算所有的dis,随便排个序,然后扫描一遍,输出答案

Code

No Code
没有

相关文章: