为啥前两个测试点过不去
查看原帖
为啥前两个测试点过不去
699788
Gongxi12楼主2023/12/17 13:05
#include<iostream>
using namespace std;
long long a[5000010];
int w;
void qs(int l, int r) {
	int i = l, j = r;
	long long k = a[(l + r) / 2];
	while (i < j) {
		while (a[i] < k) {
			i++;
		}
		while (a[j] > k) {
			j--;
		}
		swap(a[i], a[j]);
	}
	if (w < i) {
		qs(l, i - 1);
	}
	else if (w > i) {
		qs(i + 1, r);
	}
	else if (w == i) {
		return;
	}
}
int main() {
	int n;
	scanf("%d %d", &n, &w);
	for (int i = 0; i < n; i++) {
		scanf("%lld", &a[i]);
	}
	qs(0, n - 1);
	printf("%lld", a[w]);
}
2023/12/17 13:05
加载中...