0567 - Pereche
Cerința
n elevi numerotați de la 1 la n stau în cerc, astfel încât elevul 1 și elevul n sunt vecini. Pentru fiecare elev se cunoaște înălțimea. O pereche de elevi învecinați este pereche potrivită dacă diferența dintre înălțimile elevilor este minimă. Determinați o pereche potrivită.
Date de intrare
Programul citește de la tastatură numărul n, iar apoi n înălțimi ale elevilor, în ordine.
Date de ieșire
Programul va afișa pe ecran numerele de ordine i j, separate prin exact un spatiu, a elevilor care formează o pereche potrivită.
Restricții și precizări
- 2 ≤ n ≤ 1000;
- cele n numere citite vor fi mai mici decât 1.000;
- dacă există mai multe perechi potrivite, se poate afișa oricare;
Exemplul 1
- Intrare
- 5
- 4 6 3 5 3
- Ieșire
- Datele de intrare corespund restricțiilor impuse.
- 1 5
Exemplul 2
- Intrare
- 1
- 4 6 3 5 3
- Ieșire
- Datele de intrare nu corespund restricțiilor impuse.
Rezolvare
<syntaxhighlight lang="python" line="1">
- 0567 - Pereche
def gaseste_pereche_potrivita(n, inaltimi):
# calculăm diferența absolută între prima și ultima înălțime diferenta_primul_ultimul = abs(inaltimi[0] - inaltimi[-1]) indice_elev1, indice_elev2 = 0, n - 1
# parcurgem lista de înălțimi pentru a găsi perechea cu cea mai mică diferență for i in range(n - 1): diferenta = abs(inaltimi[i] - inaltimi[i+1]) if diferenta < diferenta_primul_ultimul: diferenta_primul_ultimul = diferenta indice_elev1, indice_elev2 = i, i+1
return indice_elev1 + 1, indice_elev2 + 1
if __name__ == "__main__":
n = int(input("Introduceți numărul de elevi: ")) inaltimi = list(map(int, input("Introduceți înălțimile: ").split()))
# verificarea restricțiilor if n < 2 or n > 1000 or max(inaltimi) > 1000: print("Datele de intrare nu corespund restricțiilor impuse.") else: print("Datele de intrare corespund restricțiilor impuse.") indice_elev1, indice_elev2 = gaseste_pereche_potrivita(n, inaltimi) print(f"Perechea potrivită este: {indice_elev1} {indice_elev2}")
</syntaxhighlight>