ww4445 @ 2021-02-21 13:20:12
#include<iostream>
using namespace std;
int a[5000005],k,ans;
void qui(int s,int e){
if(s==e){ //区间长度为1
ans=a[s];
return;
}
int i=s,j=e,mid=(s+e)/2,q;
while(i<=j){ //排序
while(a[i]<a[mid]) i++;
while(a[j]>a[mid]) j--;
if(i<=j){
q=a[i];a[i]=a[j];a[j]=q;
i++;
j--;
}
}
if(k<=j) qui(s,j);
else if(k>=i) qui(i,e); //判断区间
else qui(j+1,i-1);
}
int main(){
int n;
cin>>n>>k;
for(int i=0;i<n;i++) cin>>a[i];
qui(0,n-1);
cout<<ans<<endl;
return 0;
}
by 一只小可爱吖 @ 2021-02-21 13:21:28
这不就是一个排序吗
by 一只小可爱吖 @ 2021-02-21 13:22:13
md你们这些人是不会看题解吗
by ww4445 @ 2021-02-21 13:29:55
@一只小可爱吖 半天找不出来哪里错了。。。。(不然我还来这里问
by 一只小可爱吖 @ 2021-02-21 13:42:51
@ww4445 看题解啊兄弟
by ww4445 @ 2021-02-21 14:38:11
@一只小可爱吖 我对着题解改两小时了。。。现在是5wa。。。我实在找不出来啊?
by 一只小可爱吖 @ 2021-02-21 15:11:31
@ww4445 这就是一个排序,你写那么复杂干什么