社区讨论

求助!二分做的,但不清楚为什么1,3WA了!!!

P1923【深基9.例4】求第 k 小的数参与者 3已保存回复 3

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
3 条
当前快照
1 份
快照标识符
@lobtyk4x
此快照首次捕获于
2023/10/30 02:54
2 年前
此快照最后确认于
2023/11/04 07:20
2 年前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
int a[5000010],n,k;
int search(int low,int high){
	 int mid,l=low,r=high,tmp;
	 mid=a[(low+high)/2];
	 while(l<r){
	 	while(mid>a[l])l++;
	 	while(mid<a[r])r--;
	 	if(l<=r){
	 		tmp=a[l];
	 		a[l]=a[r];
	 		a[r]=tmp;
	 		l++;
	 		r--;
		 }
	 }
	 if(a[k]==mid)return mid;
	 else if(a[k]<mid)search(low,r);
	 else search(l,high); 
}
int main(void){
	cin>>n>>k;
	for(int i=0;i<n;i++)scanf("%d",&a[i]);
	cout<<search(0,n-1);
	return 0; 
}

回复

3 条回复,欢迎继续交流。

正在加载回复...