#include <cstdio>
#include <iostream>
#include <cstring>
using namespace std;
long long a[5000010];
inline int read()
{ //快速读入
int x = 0, f = 1;
char c = getchar();
while (c < '0' || c > '9')
{
if (c == '-')
f = -1;
c = getchar();
}
while (c >= '0' && c <= '9')
{
x = (x << 1) + (x << 3) + (c ^ 48);
c = getchar();
}
return x * f;
}
void qsort(int begin, int end, int k)
{
int left = begin;
int right = end;
int mid = a[(begin + end) / 2];
if (begin >= end)
return;
while (left < right)
{
while (a[right] >= mid && left < right)
right--;
while (a[left] <= mid && left < right)
left++;
swap(a[left], a[right]);
}
a[left] = mid;
if (k - 1 < left)
qsort(begin, left - 1, k);
else if (k - 1 > left)
qsort(left + 1, end, k);
else
return;
}
int main()
{
int n, k;
//cin>>n>>k;
scanf("%d%d", &n, &k);
for (int i = 0; i < n; i++)
{
scanf("%d", &a[i]);
}
qsort(0, n - 1, k);
printf("%d", a[k]);
return 0;
}
第33行和34行,如果没有等号就只能过后面三个测试(前两个TLE),如果有等号就只能过前面两个测试(后面三个WA),这是为什么啊,求大佬解答