Cod sursa(job #2537096)

Utilizator stelian2000Stelian Chichirim stelian2000 Data 3 februarie 2020 00:22:43
Problema Statistici de ordine Scor 50
Compilator py Status done
Runda Arhiva educationala Marime 0.58 kb
import random

def nth_element(v, k):
    if len(v)==1:
        return v[0]
    pivot = random.choice(v)
    smaller = [x for x in v if x<pivot]
    bigger = [x for x in v if x>pivot]
    equal = [x for x in v if x==pivot]
    if len(smaller)>=k:
        return nth_element(smaller, k)
    else:
        k -= len(smaller)
    if k<=len(equal):
        return pivot
    return nth_element(bigger, k-len(equal))


f = open("sdo.in", "r")
g = open("sdo.out", "w")
n, k = map(int,f.readline().split())
v = list(map(int,f.readline().split()))
g.write(str(nth_element(v, k)))