0511 - K Sort: Difference between revisions

From Bitnami MediaWiki
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...
Tag: visualeditor
 
No edit summary
Tag: visualeditor
 
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]

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]

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

Date de ieșire[edit]

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]

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

Exemplul 1[edit]

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]

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

Rezolvare[edit]

<syntaxhighlight lang="python" line="1">

  1. 0511 - K Sort
  2. 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()))
  1. 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])
  1. definim functia care va returna ultimele n-k elemente in ordine descrescatoare
  2. 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>