码迷,mamicode.com
首页 > 其他好文 > 详细

问题 M: 最亲密的x个人

时间:2018-12-31 18:59:40      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:operator   tar   name   技术   个数   inf   int   userinfo   copy   

问题 M: 最亲密的x个人

时间限制: 1 Sec  内存限制: 128 MB
提交: 412  解决: 38
[提交] [状态] [命题人:jsu_admin]

题目描述

有一天,地球受到了降维打击,从三维变成了一维。从此我们都生活在一条线上,给这条线加上坐标,每个点都是大于等于 0 的正整数。

有一天小明突发奇想,想知道谁是他最亲密的人,距离小明越近的人和小明越亲密。

假设有 N 个人,每个人的编号为 i(1 <= i <= N ),坐标为 ki(k[i-1] <= k[i] <= k[i+1]),小明的坐标为 M(小明是 N 个人中的一个),你们可以帮助小明找到他最亲密的 X个人的编号吗?

输入

多组输入 
对于每组数据,第一行为三个整数N(0<N<=100000 )、M(0<M<=100000000)、X(X <= N && X <= 100)
第二行有N个数,分别表示 N 个人的坐标 


 

输出

小明最亲密的 X 个人的编号(亲密度相同的,按id从小到大输出。如果第 x+1 个人和第 x 个人一样亲密,也需要输出)

样例输入 Copy

3 2 1
1 2 4
3 2 1
1 2 3

样例输出 Copy

1
1
3

定义一个结构体包含 x,id,dis dis 为到 m 的距离 然后排序,按距离小的排在前面, 距离相同 时编号小排前

输出前 x 个人即可,再判断第 x+1 个人的距离是否和第 x 个人一样,是的话输出,反 之不输出

 

技术分享图片
 1 #include <bits/stdc++.h>
 2 #include<iostream>
 3 #include<algorithm>
 4 #include<cstdlib>
 5 #include<cstring>
 6 #include<cstdio>
 7 
 8 //#define DEBUG
 9 #define RI register int
10 using namespace std;
11 typedef long long ll;
12 //typedef __int128 lll;
13 const int N=100000+10;
14 const int MOD=1e9+7;
15 const double PI = acos(-1.0);
16 const double EXP = 1E-8;
17 const int INF = 0x3f3f3f3f;
18 int t,n,m,k,q;
19 struct node{
20     int id,x;
21     bool operator <(const node &S)const{
22         if(x==S.x)
23             return id<S.id;
24         return x<S.x;
25     }
26 }a[N];
27 int main()
28 {
29 
30     while(scanf("%d%d%d",&n,&m,&k)!=EOF){
31         for(int i=1;i<=n;i++){
32             scanf("%d",&t);
33             a[i].id=i;
34             a[i].x=abs(t-m);
35         }
36         sort(a+1,a+n+1);
37         int cnt=0;
38         t=1;
39         while(cnt<k){
40             if(a[t].x!=0){
41                 //cnt++;
42                 q=a[t].x;
43                 while(q==a[t].x&&cnt<=k){
44                     cout << a[t].id << endl;
45                     t++;
46                     cnt++;
47                 }
48             }else{
49                 t++;
50             }
51  
52         }
53     }
54  
55     //cout << "Hello world!" << endl;
56     return 0;
57 }
View Code

 

 

问题 M: 最亲密的x个人

标签:operator   tar   name   技术   个数   inf   int   userinfo   copy   

原文地址:https://www.cnblogs.com/DWVictor/p/10202525.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!