0086 - Half 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 întregi, n fiind număr par.

Să se ordoneze crescător elementele din prima jumătate a vectorului și descrescător elementele din a doua jumătate.

Date de intrare

Fişierul de intrare halfsort.in conţine pe prima linie numărul n si pe a doua linie n numere întregi separate prin spaţii.

Date de ieșire

Pe ecran se va afișa mesajul: "Datele de intrare corespund restricțiilor impuse."

Pe următoarea linie se vor afișa cele n elemente ale vectorului, ordonate conform cerinței, separate printr-un spațiu.

În cazul în care datele introduse de la tastatură nu îndeplinesc cerințele enunțate, pe ecran se va afișa mesajul "Datele de intrare nu corespund restricțiilor impuse."

Restricții și precizări

  • 1 ≤ n ≤ 100, n număr par
  • valoarea absolută a numerelor de pe a doua linie a fişierului de intrare va fi mai mică decât 1.000.000.000

Exemplu 1

Intrare
6
8 2 9 4 5 7
Ieșire
Datele de intrare corespund restricțiilor impuse.
2 8 9 7 5 4

Exemplu 2

Intrare
-2
8 2 9 4 5 7
Ieșire
Datele de intrare nu corespund restricțiilor impuse.

Rezolvare

#0086 Half Sort
def conditii(n, numere):
    return len(numere) == n and \
        1 <= n <= 100 and \
        n % 2 == 0 and \
        all(abs(nr) < 1_000_000_000 for nr in numere)


def half_sort(numere):
    # Secționăm și sortăm crescător prima jumătate a listei: numere[ :len(numere)//2]
    # Secționăm și sortăm descrescător a doua jumătate a listei: numere[len(numere)//2: ]
    # Folosim operatorul + pentru a concatena elementele celor două liste
    rezultat = sorted(numere[:len(numere)//2], reverse=False) + \
               sorted(numere[len(numere)//2:], reverse=True)
    print(" ".join([str(x) for x in rezultat]))


if __name__ == "__main__":
    n = int(input())
    numere = [int(x) for x in input().split()]
    if not conditii(n, numere):
        print("Datele de intrare nu corespund restricțiilor impuse.")
    else:
        print("Datele de intrare corespund restricțiilor impuse.")
        half_sort(numere)