萌新求助!只有60分,2TLE。

P1923 【深基9.例4】求第 k 小的数

kevin811212 @ 2021-07-24 11:27:21


using namespace std;
int main()
{
int n,x;
cin>>n>>x;
int const n1=n;
int n2[n1]={0};
for(int i=0;i<n;i++)
{
cin>>n2[i];
}
sort(n2,n2+n1);
cout<<n2[x];
return 0;
}```
#大佬帮忙看看

by __Aaaaaaaa @ 2021-07-24 11:35:34

这要用两个堆


by 一大 @ 2021-07-24 12:15:46

500万的数据,sort会爆炸 第k大,万一有相等的呢 应加上unique


by Sliarae @ 2021-07-24 12:47:48

@kevin811212

#include<bits/stdc++.h>
using namespace std;
int main() {
    int n,x;
    scanf("%d%d",&n,&x);
    int const n1=n;
    int n2[n1]= {0};
    for(int i=0; i<n; i++) {
        scanf("%d",&n2[i]);
    }
    nth_element(n2,n2+x,n2+n1);
    cout<<n2[x];
    return 0;
}

by 红黑树 @ 2021-07-24 12:54:11

这个要自己写排序。

!注意 并不需要全部排完,只需要排到k个


|