求助3个WA1个TLE
查看原帖
求助3个WA1个TLE
637788
kimi0705楼主2022/9/4 22:37

求助3个WA1个TLE。
思路:二分判断左或右。
用快速排序的方法:
a,b,c,da,b,c,d
cc为基准,a,b<=c<=da,b<=c<=d

#include<bits/stdc++.h>
using namespace std;
const int N=5e6+10;
int n,k;
int a[N];
int quick_sort(int l,int r,int number){
    if(l==r) return a[l];
    int i=l-1,j=r+1,m=a[l+(r-l)/2];
    while(i<j){
        while(a[++i]<m);
        while(a[--j]>m);
        if(i<j) swap(a[i],a[j]);
    }
    if(i==number) return a[i];
    else if(i<number) return quick_sort(i+1,r,number-i);
    else return quick_sort(l,i-1,number);
}    
int main(){
    cin>>n>>k;
    k++;
    for(int i=1;i<=n;i++) cin>>a[i];
    cout<<quick_sort(1,n,k);
    return 0;
}
2022/9/4 22:37
加载中...