FanZhiyu1 @ 2024-08-30 17:28:04
#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;
}
by DANNNqwq @ 2024-08-30 17:30:31
你flag随机找试试
by sea_of_answers @ 2024-08-30 18:03:08
@FanZhiyu1 本题在于输入输出,可以使用scanf
/printf
输入输出,其他可以正常求。