0618 - Inaltimi

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 dau înălțimile a n copii, numerotați de la 1 la n, exprimate prin numere naturale. Afișați numerele de ordine ale copiilor în ordinea crescătoare a înălțimii lor.

Date de intrare

Programul citește de la tastatură numărul n, iar apoi n numere naturale, separate prin spații, reprezentând, în ordine, înălțimile copiilor.

Date de ieșire

Programul va afișa pe ecran n numere naturale distincte cuprinse între 1 și n, separate prin exact un spațiu, reprezentând numerele de ordine ale copiilor în ordinea crescătoare a înălțimii.

Restricții și precizări

  • 1 ≤ n ≤ 1000
  • înălțimile copiilor vor fi numere naturale distincte din intervalul [1, 10.000]

Exemplul 1

Intrare
7
8 20 16 14 10 4 12
Ieșire
Datele de intrare corespund restricțiilor impuse.
6 1 5 7 4 3 2

Exemplul 2

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

Rezolvare

#0618 - Inaltimi
# definim o functie pentru citirea inaltimilor, aceasta va returna o lista de numere intregi
def citeste_inaltimi(n):
    inaltimi = list(map(int, input().split()))
    return inaltimi
# definim o functie pentru ordonarea crescatoare a inaltimilor si afisarea numerelor corespunzatoare
def ordonare_crescatoare_si_afisare(n, inaltimi):
    numere_ordine = list(range(1, n+1)) # definim o lista de numere de la 1 la n
    for i in range(n):
        for j in range(i+1, n):
            if inaltimi[j] < inaltimi[i]: # comparam inaltimile iar daca sunt in ordine gresita, le 
                                          # interschimbam
                inaltimi[i], inaltimi[j] = inaltimi[j], inaltimi[i]
                numere_ordine[i], numere_ordine[j] = numere_ordine[j], numere_ordine[i]
    print(*numere_ordine) # afisam numerele, ordonate crescator

if __name__ == '__main__':
    n = int(input()) # citim numarul de inaltimi
    inaltimi = citeste_inaltimi(n)  # apelam functia de citire a inaltimilor
    if n < 1 or n > 1000 or (min(inaltimi) < 1 or max(inaltimi) > 10000): # verificarea 
                                                                          # restrictiilor
        print("Datele de intrare nu corespund restricțiilor impuse.")
    else:
        print("Datele de intrare corespund restricțiilor impuse.")
    ordonare_crescatoare_si_afisare(n, inaltimi) # apelam functia de ordonare si afisare a 
                                                 # numerelor