1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
n, k = map(int, input().split())
arr = list(map(int, input().split()))
def quick_select(arr, l, r, k):
if l == r:
return arr[l]
pivot = arr[(l+r)//2]
i, j = l, r
while True:
while arr[i] < pivot: i += 1
while arr[j] > pivot: j -= 1
if i >= j: break
arr[i], arr[j] = arr[j], arr[i]
i, j = i + 1, j - 1
cnt = j - l + 1
if k <= cnt:
return quick_select(arr, l, j, k)
else:
return quick_select(arr, j + 1, r, k - cnt)
print(quick_select(arr, 0, len(arr)-1, k + 1))
|