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