misaka2784 @ 2023-05-27 17:04:17
//
// main.c
// p1923
//
// Created by yamixiu on 2023/05/22.
//
#include <stdio.h>
#define MAX 5000010
int a[MAX],n,k;
void swap(int*a,int*b){
int t=*a;*a=*b;*b=t;
}
void q_sort(int l,int r,int*flag){
if(l>=r&&(l==k||r==k)){
printf("%d",a[k]);
*flag=1;
}
if(l>=r)return;
int mid=l+r>>1;
int pivot = a[mid];
int i=l-1,j=r+1;
while (i<j) {
while(a[++i]<pivot);
while(a[--j]>pivot);
if(i<j)swap(&a[i],&a[j]);
}
if(k<=j)q_sort(l, j, flag);
else q_sort(i, r, flag);
}
int main(int argc, const char * argv[]) {
scanf("%d%d", &n, &k);
for(int i=0;i<n;i++)scanf("%d",&a[i]);
int flag =0;
q_sort(0,n-1
,&flag);
return 0;
}
by misaka2784 @ 2023-05-27 17:06:58
if(*flag)return; 这个漏掉了,是加在排序函数的第一行,但是依然过不了