为什么本地跑不出但有60分

P1923 【深基9.例4】求第 k 小的数

sanammm @ 2022-10-29 23:13:26

#include<stdio.h>
int k;
void findkth(int a[],int l,int r)
{
    if(l==r)
    {
        return;
    }
    int i=1,j=r,flag=a[(l+r)/2],tmp;
    do{
        while(a[i]<flag) i++;
        while(a[j]>flag) j--;
        if(i<=j) 
        {
            tmp=a[i];a[i]=a[j];a[j]=tmp;
            i++;j--;
        }
    }while(i<=j);

    if(k<=j) findkth(a,l,j);//第k小数字在哪个区间
    else if(i<=k) findkth(a,i,r);
    else findkth(a,j+1,i-1);
}
int main()
{
    int n,a[5000001];
    scanf("%d %d",&n,&k)
    ;
    for(int i=0;i<n;i++) scanf("%d",&a[i]);
    findkth(a,0,n-1);
    printf("%d",a[k]);
    return 0;
}

还有40分超时了


|