0512 - Sort Max

From Bitnami MediaWiki

Cerința[edit | edit source]

Se dă un vector cu n elemente, numere naturale distincte. Ordonați crescător elementele situate înaintea valorii maxime din vector și descrescător elementele situate după această valoare.

Date de intrare[edit | edit source]

Programul citește de la tastatură numerele n, 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 ≤ n ≤ 1000;
  • cele n numere citite vor fi mai mici decât 1.000.000.000;

Exemplul 1[edit | edit source]

Intrare
7
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
0
Ieșire
Datele de intrare nu corespund restricțiilor impuse.

Rezolvare[edit | edit source]

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

  1. 0512 - Sort Max
  2. definim o funcție pentru sortare

def sort_vector(n, a):

   # găsim valoarea maximă și indexul acesteia în vector
   max_val = max(a)
   max_index = a.index(max_val)
   # sortăm valorile de dinainte și de după valoarea maximă
   a[:max_index] = sorted(a[:max_index])
   a[max_index:] = sorted(a[max_index:], reverse=True)
   # returnăm elementele vectorului, sortate
   return a

if __name__ == "__main__":

   # citim valorile de intrare
   n = int(input())
   a = list(map(int, input().split()))
   # verificăm restricțiile
   if n >= 2 and n <= 1000 and max(a) < 1000000000:
       # dacă valorile de intrare respectă restricțiile impuse, sortăm vectorul și îl afișăm
       print("Datele de intrare corespund restricțiilor impuse.")
       a = sort_vector(n, a)
       print(*a)
   else:
       print("Datele de intrare nu corespund restricțiilor impuse.")


</syntaxhighlight>