编译失败求条
查看原帖
编译失败求条
1490301
hzishi楼主2025/2/7 11:01
#include<bits/stdc++.h> 
using namespace std;
const int N=5e6+5;
int n,tot,k,ans,a[N];
void search_k(int l,int r){ //l左指针 ,r右指针(l,r区间起始索引) 
	if(l==r&&l==k){	ans=a[k];	return ;	}		
	if(l<r){
		int i=l,j=r,p=a[l]; //选左端点为基准
		while(i<j){
			while(i<j&&a[j]>p)j--; //从右向左,找到第一个<=基准数的数
			if(i<j)swap(a[i],a[j]);
			while(i<j&&a[i]<=p)i++; //从左向右,找到第一个>=基准数的数
			if(i<j)swap(a[i],a[j]); 
		} 
		if(i==k){	ans=a[k]; return;}
		else if(i>k)search_k(l,i-1); //k在左区间
		else   search_k(i+1,r); //k在右区间 		
	}
} 
int main(){
	cin>>n>>k;	k++; //修改下标从1开始
	for(int i=1;i<=n;i++)scanf(“%d”,&a[i]); //cin输入会导致超时
	search_k(1,n);
	cout<<ans;
	return 0; 
} 

2025/2/7 11:01
加载中...