排序
一、例题
1. 第 k 大的数
题目描述
现有 n n n 个正整数,要求出这 n n n 个正整数中的第 k k k 大的数?
输入描述
输入共两行。
第一行 n , k n,k n,k。
第二行为 n n n 个正整数的值。
输出描述
第 k k k 大的数。
样例1
输入
5 3 5 9 8 3 4
输出
5
提示
1 ≤ n ≤ 1 0 5 1≤n≤10^5 1≤n≤105, 1 ≤ k ≤ 1 0 3 1≤k≤10^3 1≤k≤103。保证正整数均在
int
范围内。
#include <iostream>
#include <algorithm>
using namespace std;
int n, k;
int a[100005];
int main() {
cin >> n >> k;
for (int i = 1; i <= n; i++) {
cin >> a[i];
}
sort(a+1, a+n+1, greater<int>());
cout << a[k];
return 0;
}
2. [NOIP 普及组 2009] 分数线划定
题目描述
世博会志愿者的选拔工作正在 A 市如火如荼的进行。为了选拔最合适的人才,A 市对所有报名的选手进行了笔试,笔试分数达到面试分数线的选手方可进入面试。面试分数线根据计划录取人数的 150 % 150\% 150% 划定,即如果计划录取 m m m 名志愿者,则面试分数线为排名第 ⌊ m × 150 % ⌋ \lfloor m\times 150\% \rfloor ⌊m×150%⌋ 名的选手的分数,而最终进入面试的选手为笔试成绩不低于面试分数线的所有选手。
现在就请你编写程序划定面试分数线,并输出所有进入面试的选手的报名号和笔试成绩。
输入描述
第一行,两个整数 n , m n,m n,m( 5 ≤ n ≤ 5000 5 ≤ n ≤ 5000 5≤n≤5000, 3 ≤ m ≤ n 3 ≤ m ≤ n 3≤m≤n),中间用一个空格隔开,其中