社区讨论
求助!二分做的,但不清楚为什么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 条回复,欢迎继续交流。
正在加载回复...