0511 - K Sort

De la Universitas MediaWiki
Versiunea pentru tipărire nu mai este suportată și poate avea erori de randare. Vă rugăm să vă actualizați bookmarkurile browserului și să folosiți funcția implicită de tipărire a browserului.

Cerința

Se dă un vector cu n elemente, numere naturale și un număr k. Ordonați crescător primele k elemente ale vectorului și descrescător ultimele n-k elemente.

Date de intrare

Programul citește de la tastatură numerele n și k, iar apoi n numere naturale, reprezentând elementele vectorului.

Date de ieșire

Programul va afișa pe ecran elementele vectorului, separate prin exact un spațiu, după efectuarea operațiilor cerute.

Restricții și precizări

  • 1 ≤ k < n ≤ 1000
  • cele n numere citite vor fi mai mici decât 1.000.000.000

Exemplul 1

Intrare
7 3
13 1 10 15 3 7 11
Ieșire
Datele de intrare corespund restricțiilor impuse.
1 10 13 15 11 7 3

Exemplul 2

Intrare
0 7
1 10 13 15 11 7 3
Ieșire
Datele de intrare nu corespund restricțiilor impuse.

Rezolvare

#0511 - K Sort
# definim functia care va citi si va returna un vector de n elemente, dat de la tastatura
def citeste_vector(n):
    return list(map(int, input().split()))
# definim functia care va returna primele k elemente in ordine crescatoare dintr-un vector dat
def ordonare_primele_k_elemente(k, vector):
    return sorted(vector[:k])
# definim functia care va returna ultimele n-k elemente in ordine descrescatoare
# dintr-un vector dat
def ordonare_ultimele_n_minus_k_elemente(n, k, vector):
    return sorted(vector[k:], reverse=True)

if __name__ == '__main__':
    n, k = map(int, input().split())
    vector = citeste_vector(n)
    # verificarea restrictiilor
    if n < 2 or n > 1000 or k < 1 or k >= n or any(x >= 1000000000 for x in vector):
        print("Datele de intrare nu corespund restricțiilor impuse.")
    else:
        print("Datele de intrare corespund restricțiilor impuse.")
        primele_k_elemente = ordonare_primele_k_elemente(k, vector)
        ultimele_n_minus_k_elemente = ordonare_ultimele_n_minus_k_elemente(n, k, vector)
        print(*(primele_k_elemente + ultimele_n_minus_k_elemente)) # afisam rezultatul