Pagini recente » Cod sursa (job #1632974) | Cod sursa (job #1361103) | Cod sursa (job #2269193) | Cod sursa (job #525611) | Cod sursa (job #2449473)
#!/usr/bin/env python3
import random, sys
sys.stdout = open('sdo.out', 'w')
with open('sdo.in', 'r') as f:
readInts = lambda: map(int, f.readline().split())
N, K = tuple(readInts())
v = list(readInts())
K -= 1
def partition(start, end):
if start >= end - 1: return start
p, k = random.randrange(start, end), start
v[p], v[end - 1] = v[end - 1], v[p]
while start < end - 1:
if v[start] < v[end - 1]:
v[start], v[k] = v[k], v[start]
k += 1
start += 1
v[k], v[end - 1] = v[end - 1], v[k]
return k
l, r = 0, N
while l <= r:
k = partition(l, r)
if k == K:
break
elif k > K:
r = k
else:
l = k + 1
print(v[K])