这个为什么还是超时了呀
查看原帖
这个为什么还是超时了呀
738083
sjrdlgzh楼主2024/3/9 15:17
#include<bits/stdc++.h>
using namespace std;
int n,a[5000005],m;
void kp(int ld,int rd)
{
	int mid=a[(ld+rd)/2];
	int ll=ld,rl=rd;
	do
	{
		while(a[ll]<mid)
		{
			ll++;
		}
		while(a[rl]>mid)
		{
			rl--;
		}
		if(ll<=rl)
		{
			swap(a[ll],a[rl]);
			ll++;
			rl--;
		}
		
	}while(ll<=rl);
	if(m>=ll)
	{
		kp(ll,rd);
	}
	else if(rl>=m)
	{
		kp(ld,rl);
	}
	else if(m>rl&&m<ll)
	{
		printf("%d",a[rl+1]);
		return;
	}
	
}
int main()
{
	scanf("%d",&n);
	scanf("%d",&m);
	for(int i=0;i<n;i++)
	{
		cin>>a[i];
	}
	kp(0,n-1);
}
2024/3/9 15:17
加载中...