求助,3wa+2tle
查看原帖
求助,3wa+2tle
406728
ww4445楼主2021/2/21 13:20
#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;
}
2021/2/21 13:20
加载中...