Cod sursa(job #2399943)

Utilizator Vele_GeorgeVele George Vele_George Data 8 aprilie 2019 10:55:15
Problema Statistici de ordine Scor 0
Compilator py Status done
Runda Arhiva educationala Marime 0.82 kb
import random

def order_stat(vec, k):
    left, right = 0, len(vec)

    found = False

    while not found:
        pivot = random.randrange(left, right)

        vec[pivot], vec[right - 1] = vec[right - 1], vec[pivot]

        i = left
        for j in range(left, right - 1):
            if vec[j] < vec[right - 1]:
                vec[i], vec[j] = vec[j], vec[i]
                i += 1
        vec[right-1], vec[i] = vec[i], vec[right-1]

        if i == k:
            found = True
        elif k < i:
            right = i
        else:
            left = i + 1

    return vec[i]

with open('sdo.in', 'r') as f:
    n, k = [ int(x) for x in f.readline().split(' ')]
    vec = [ int(x) for x in f.readline().split(' ')]


with open('sdo.out', 'w') as f:
    f.write(str(order_stat(vec, k - 1)))