0567 - Pereche: Difference between revisions
Adina Timiș (talk | contribs) Pagină nouă: ==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 num... |
Adina Timiș (talk | contribs) No edit summary |
||
Line 24: | Line 24: | ||
:Datele de intrare nu corespund restricțiilor impuse. | :Datele de intrare nu corespund restricțiilor impuse. | ||
==Rezolvare== | ==Rezolvare== | ||
<syntaxhighlight lang="python" line=""> | <syntaxhighlight lang="python" line="1"> | ||
#0567 - Pereche | #0567 - Pereche | ||
def gaseste_pereche_potrivita(n, inaltimi): | def gaseste_pereche_potrivita(n, inaltimi): | ||
diferenta_primul_ultimul = abs(inaltimi[0] - inaltimi[-1]) | # calculăm diferența absolută între prima și ultima înălțime | ||
indice_elev1, indice_elev2 = 0, n - 1 | 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): | for i in range(n - 1): | ||
diferenta = abs(inaltimi[i] - inaltimi[i+1]) | diferenta = abs(inaltimi[i] - inaltimi[i+1]) | ||
Line 36: | Line 38: | ||
indice_elev1, indice_elev2 = i, i+1 | indice_elev1, indice_elev2 = i, i+1 | ||
return indice_elev1+1, indice_elev2+1 | return indice_elev1 + 1, indice_elev2 + 1 | ||
if __name__ == "__main__": | if __name__ == "__main__": | ||
n = int(input("Introduceți numărul de elevi: ")) | n = int(input("Introduceți numărul de elevi: ")) | ||
inaltimi = list(map(int, input("Introduceți înălțimile | inaltimi = list(map(int, input("Introduceți înălțimile: ").split())) | ||
# verificarea restricțiilor | |||
if n < 2 or n > 1000 or max(inaltimi) > 1000: | if n < 2 or n > 1000 or max(inaltimi) > 1000: | ||
print("Datele de intrare nu corespund restricțiilor impuse.") | print("Datele de intrare nu corespund restricțiilor impuse.") | ||
Line 48: | Line 53: | ||
print(f"Perechea potrivită este: {indice_elev1} {indice_elev2}") | print(f"Perechea potrivită este: {indice_elev1} {indice_elev2}") | ||
</syntaxhighlight> | </syntaxhighlight> |
Latest revision as of 10:44, 21 May 2023
Cerința[edit | edit source]
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[edit | edit source]
Programul citește de la tastatură numărul n, iar apoi n înălțimi ale elevilor, în ordine.
Date de ieșire[edit | edit source]
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[edit | edit source]
- 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[edit | edit source]
- Intrare
- 5
- 4 6 3 5 3
- Ieșire
- Datele de intrare corespund restricțiilor impuse.
- 1 5
Exemplul 2[edit | edit source]
- Intrare
- 1
- 4 6 3 5 3
- Ieșire
- Datele de intrare nu corespund restricțiilor impuse.
Rezolvare[edit | edit source]
<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>