【深基9.例4】求第 k 小的数
题目描述
输入 $n$($1 \le n < 5000000$ 且 $n$ 为奇数)个数字 $a_i$($1 \le a_i < {10}^9$),输出这些数字的第 $k$ 小的数。最小的数是第 $0$ 小。
输入格式
输出格式
样例 #1
样例输入 #1
5 1
4 3 2 1 5
样例输出 #1
2
思路
用nth_element求第 k 小的数。
AC代码
#include <iostream>
#include <vector>
#include <algorithm>
#define AUTHOR "HEX9CF"
using namespace std;
vector<int> v;
void read(int &x)
{
char ch;
x = 0;
while (('0' > ch || '9' < ch))
{
ch = getchar();
}
while (!('0' > ch || '9' < ch))
{
x = x * 10 + ch - '0';
ch = getchar();
}
}
int main()
{
int n, k;
read(n);
read(k);
for (int i = 0; i < n; i++)
{
int in;
read(in);
v.push_back(in);
}
nth_element(v.begin(), v.begin() + k, v.end());
cout << v[k] << endl;
return 0;
}