大家好,又见面了,我是全栈君。
问题链接:CCF NOI1087 第K名。
时间限制: 1000 ms 空间限制: 262144 KB
题目描述
刚举行的万米长跑活动中,有N个人跑完了全程,所用的时间都不相同。颁奖时为了增加趣味性,随机抽了一个数K,要奖励第K名一双跑鞋。
现在组委会给你N个人的姓名、成绩(用时,单位是秒),请你编程快速输出第K名的姓名。
输入
第一行:2个整数N和K,范围[ 1≤ K ≤ N ≤ 100 ]。
下面N行:每行第1个是字符串表示姓名;第2个是个整数,表示这个人跑完的使用时间。
输出
一行,第K名的姓名。
样例输入
5 3
wangxi 2306
xiaoming 3013
zhangfan 3189
chengli 4012
jiangbou 2601
样例输出
xiaoming
数据范围限制
1≤ K ≤ N ≤ 100
提示
问题分析
这个问题可以用排序来解决。
程序说明
(略)
要点详解
- 使用宏定义可以使得代码可阅读性增强。
- C++语言的排序函数是sort(),需要留意用法。
参考链接:(略)。
100分通过的C++程序:
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 100;
struct _node {
string name;
int val;
} a[N];
bool cmp(_node a, _node b)
{
return a.val < b.val;
}
int main()
{
int n, k;
cin >> n >> k;
for(int i=0; i<n; i++)
cin >> a[i].name >> a[i].val;
sort(a, a + n, cmp);
cout << a[k - 1].name << endl;
return 0;
}
转载于:https://www.cnblogs.com/tigerisland/p/7563840.html
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/108521.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...