题解:P1923 【深基9.例4】求第 k 小的数
题目十分清楚,不多说了。
注意到出题人想让我们写分治,所以我们考虑如何不写分治。
容易发现数组长度不超过 \(5 \times 10 ^ 6\),使用 sort 排序算法 \(O(n\log n)\) 的时间复杂度大约要跑 \(2 \times 10 ^ 8\),拜谢洛谷神机,仅需要输入加速便能跑过。
那么只需将 \(a\) 数组排序,输出第 \(k\) 小的数即可。注意最小的数字是第 \(0\) 小,所以要输出 \(a_{k + 1}\)。
#include<bits/stdc++.h>
using namespace std;
long long a[5000005],k;
int main(){
ios::sync_with_stdio(false);
int n;
cin>>n>>k;
for(int i=1;i<=n;i++)
cin>>a[i];
sort(a+1,a+n+1);
cout<<a[k+1];
return 0;
}

浙公网安备 33010602011771号