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个