为什么快选还超时啊
查看原帖
为什么快选还超时啊
1241741
FanZhiyu1楼主2024/8/30 17:28
#include<bits/stdc++.h>
using namespace std;
const int N=5e6+5;
int q[N];
int qchoose(int l,int r,int k){
	if(l>=r) return q[l];
	int i=l,j=r,flag=q[(l+r)/2];
	do{
		while(q[i]<flag) i++;
		while(q[j]>flag) j--;
		if(i<=j){
			swap(q[i],q[j]);
			i++;
			j--;
		}
	}while(i<=j);
	int sl=j-l+1;
	if(k<=sl) return qchoose(l,j,k);
	else return qchoose(j+1,r,k-sl);
}
int main()
{
    int n,k;
    cin>>n>>k;
    for(int i=0;i<n;i++) cin>>q[i];
    cout<<qchoose(0,n-1,k+1);
    return 0;
}
2024/8/30 17:28
加载中...