加载中...

题解: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;
}
posted @ 2025-10-06 13:53  碎碎念的女巫  阅读(2)  评论(0)    收藏  举报