快排求助,WA #4
查看原帖
快排求助,WA #4
1421656
little_q_exist楼主2024/10/19 15:43

刚刚开始学快排,样例过了,但是在#4上WA了

#include<cstdio>
using namespace std;
long long a[5000010],t;
void part(long long l,long long r,long long k){
	long long i = l,j = r,flag = a[(l+r)/2];
	
	while (i<j)
	{
		while (i<j && a[j] >= flag) j--;
		while (i<j && a[i] <= flag) i++;
		t = a[i];
		a[i] = a[j];
		a[j] = t;
	}
	
	t = flag;
	a[(l+r)/2] = a[i];
	a[i] = t;
	
	if (k > i) part(i+1,r,k);
	if (k < i) part(l,i-1,k);
	if (k == i)
	{
		printf("%lld",a[i]);
		return ;
	}
}
int main(){
	long long n,k;
	scanf("%lld %lld",&n,&k);
	for (long long i = 1;i<=n;i++)
	{
		scanf("%lld",&a[i]);
	}
	part(1,n,k);
	return 0;
}
2024/10/19 15:43
加载中...