0511 - K Sort: Difference between revisions
Adina Timiș (talk | contribs) Pagină nouă: ==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... |
Adina Timiș (talk | contribs) No edit summary |
||
Line 23: | Line 23: | ||
:Datele de intrare nu corespund restricțiilor impuse. | :Datele de intrare nu corespund restricțiilor impuse. | ||
==Rezolvare== | ==Rezolvare== | ||
<syntaxhighlight lang="python" line=""> | <syntaxhighlight lang="python" line="1"> | ||
#0511 - K Sort | #0511 - K Sort | ||
# definim functia care va citi si va returna un vector de n elemente, dat de la tastatura | |||
def citeste_vector(n): | def citeste_vector(n): | ||
return list(map(int, input().split())) | 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): | def ordonare_primele_k_elemente(k, vector): | ||
return sorted(vector[:k]) | 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): | def ordonare_ultimele_n_minus_k_elemente(n, k, vector): | ||
return sorted(vector[k:], reverse=True) | return sorted(vector[k:], reverse=True) | ||
Line 37: | Line 39: | ||
n, k = map(int, input().split()) | n, k = map(int, input().split()) | ||
vector = citeste_vector(n) | 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): | 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.") | print("Datele de intrare nu corespund restricțiilor impuse.") | ||
Line 43: | Line 46: | ||
primele_k_elemente = ordonare_primele_k_elemente(k, vector) | primele_k_elemente = ordonare_primele_k_elemente(k, vector) | ||
ultimele_n_minus_k_elemente = ordonare_ultimele_n_minus_k_elemente(n, 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)) | print(*(primele_k_elemente + ultimele_n_minus_k_elemente)) # afisam rezultatul | ||
</syntaxhighlight> | </syntaxhighlight> |
Latest revision as of 22:42, 28 April 2023
Cerința[edit | edit source]
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[edit | edit source]
Programul citește de la tastatură numerele n și k, iar apoi n numere naturale, reprezentând elementele vectorului.
Date de ieșire[edit | edit source]
Programul va afișa pe ecran elementele vectorului, separate prin exact un spațiu, după efectuarea operațiilor cerute.
Restricții și precizări[edit | edit source]
- 1 ≤ k < n ≤ 1000
- cele n numere citite vor fi mai mici decât 1.000.000.000
Exemplul 1[edit | edit source]
- 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[edit | edit source]
- Intrare
- 0 7
- 1 10 13 15 11 7 3
- Ieșire
- Datele de intrare nu corespund restricțiilor impuse.
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line="1">
- 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
</syntaxhighlight>