0512 - Sort Max

De la Universitas MediaWiki

Cerința

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

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

Exemplul 1

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

Intrare
0
0
Ieșire
Datele de intrare nu corespund restricțiilor impuse.

Rezolvare

#0512 - Sort Max
# 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.")