最后2个点TLE之谜

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

zhengziqi @ 2024-07-07 18:44:02

大佬求助!!! 最后2个点TLE,为什么?

#include<iostream>
using namespace std;
int n,k;
int a[5000005],ans=0;
void findkth(int l,int r)
{
    if(l==r)
    {
        ans=a[l];
        return;
    }
    int i=l,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(l,j);
    else if(i<=k) findkth(i,r);
    else findkth(j+1,i-1);
}
int main()
{
    cin>>n>>k;
    for(int i=0;i<n;i++) cin>>a[i];
    findkth(0,n-1);
    cout<<ans;
    return 0;
}

by hczyy @ 2024-07-13 11:19:31

把主函数中的cin改成scanf


by __bjxx0201__ @ 2024-08-02 09:33:56

我也是这样,也可以试着加ios


|