2594 - Partionare

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 citește un număr natural n și un șir de n numere întregi. Să se aranjeze elementele astfel încât în prima parte a șirului să fie valorile pare în ordine crescătoare, iar în partea a doua valorile impare, de asemenea în ordine crescătoare.

Date de intrare

Programul citește de la tastatură numărul n și apoi cele n elemente ale șirului.

Date de ieșire

Programul afișează pe ecran elementele șirului după prelucrare cu spații intre ele.

Restricții și precizări

  • 1 ≤ n ≤ 1000
  • cele n numere pot fi reprezentate pe 32 de biți cu semn.

Exemplul 1

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

Exemplul 2

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

Rezolvare

#2594 - Partitionare
def sort_pare_impare(lista):
    pare = []  # creăm o listă goală, pentru numerele pare
    impare = []  # a doua listă goală, pentru numerele impare

    # adăugăm fiecare număr în lista corespunzătoare
    for num in lista:
        if num % 2 == 0:
            pare.append(num)
        else:
            impare.append(num)

    pare.sort()  # sortăm lista de numere pare
    impare.sort()  # la fel lista de numere impare

    rezultat = pare + impare  # concatenăm cele două liste sortate

    return rezultat


if __name__ == "__main__":
    n = int(input("Introduceți numărul de elemente: "))
    lista = [int(num) for num in input("Introduceți șirul de numere: ").split()]

    # verificăm restricțiile
    if n < 1 or n > 1000 or any(num < -2147483648 or num > 2147483647 for num in lista):
        print("Datele de intrare nu corespund restricțiilor impuse.")
    else:
        print("Datele de intrare corespund restricțiilor impuse.")
        sorted_list = sort_pare_impare(lista)  # apelăm funcția de sortare
        print(" ".join(str(num) for num in sorted_list))  # afișăm lista sortată