关于80分#5TLE这个问题……

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

大海中的孤帆 @ 2023-08-09 10:34:24

这里本蒟蒻比较懒 用的goto语句,但是TLE了

#include<iostream>
using namespace std;
int n,k;
int a[50000010];
int maxn=0;
int main()
{
    cin>>n>>k;
    for(int i=0;i<n;++i)
    {
        cin>>a[i];
    }
    int l=0,r=n-1;
    back:
    int i=l,j=r,mi=a[(l+r)/2];
    do
    {
        while(a[j]>mi)
            j--;
        while(a[i]<mi)
            i++;
        if(i<=j)
        {
            int o=a[i];
            a[i]=a[j];
            a[j]=o;
            i++;
            j--;
        }
    }while(i<=j);
    if(k<=j)
    {
        r=j;
        goto back;
    }
    else if(i<=k)
    {
        l=i;
        goto back;
    }
    else
    {
        cout<<a[j+1];
    }
    return 0;
}

by Blone_Dragon @ 2023-08-11 14:35:02

快读可过


|