0086 - Half Sort
De la Universitas MediaWiki
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)