最后2个点TLE之谜
查看原帖
最后2个点TLE之谜
1145889
zhengziqi楼主2024/7/7 18:44

大佬求助!!! 最后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;
}
2024/7/7 18:44
加载中...