找礼物(find)

找礼物(find)

题目描述

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

输入

第1行:N和K分别表示礼物的个数和人数(K≤N≤100000);
第2到N+1行:每行先是赠送礼品人的姓名,然后是礼物的坐标(x,y)(坐标绝对值小于106)。数据间用空格分开。

输出

第1行:D和U表示礼物距你多远(只要去尾后的整数)和你能拿到多少礼物。
第2到U+1行:每行一个人名,表示送礼的人(按照输入的顺序输出)。

样例输入

5 2
Jason 1 1
Herry 4 4
Patty 3 4
Tom 2 10
Petter 5 10

样例输出

5 1
Patty
分析:求距离时注意算到long long即可,set用来去重,最后按序输出答案即可;
代码:
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <algorithm>
#include <climits>
#include <cstring>
#include <string>
#include <set>
#include <map>
#include <queue>
#include <stack>
#include <vector>
#include <list>
#include <ext/rope>
#define rep(i,m,n) for(i=m;i<=n;i++)
#define rsp(it,s) for(set<int>::iterator it=s.begin();it!=s.end();it++)
#define vi vector<int>
#define pii pair<int,int>
#define mod 1000000007
#define inf 0x3f3f3f3f
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define ll long long
#define pi acos(-1.0)
const int maxn=1e5+10;
const int dis[4][2]={{0,1},{-1,0},{0,-1},{1,0}};
using namespace std;
using namespace __gnu_cxx;
ll gcd(ll p,ll q){return q==0?p:gcd(q,p%q);}
ll qpow(ll p,ll q){ll f=1;while(q){if(q&1)f=f*p;p=p*p;q>>=1;}return f;}
int n,m;
pair<ll,string>a[maxn],b[maxn];
set<ll>q;
vector<string>pp;
int main()
{
    int i,j,k,t;
    cin>>n>>m;
    rep(i,0,n-1)
    {
        string p;
        ll x,y,r;
        cin>>p>>x>>y;
        r=(ll)(sqrt(1.0*x*x+y*y)*10000);
        a[i]=mp(r,p);
        b[i]=a[i];
        q.insert(r);
    }
    sort(a,a+n);
    if(q.size()<m)puts("555...");
    else
    {
        int now=0;
        ll ans;
        for(ll x:q){now++;if(now==m){ans=x;break;}}
        rep(i,0,n-1)
        {
            if(ans==b[i].fi)pp.pb(b[i].se);
        }
        cout<<ans/10000<<" "<<pp.size()<<endl;
        for(string x:pp)cout<<x<<endl;
    }
    //system ("pause");
    return 0;
}

 

 
posted @ 2016-07-31 14:50  mxzf0213  阅读(284)  评论(0编辑  收藏  举报