2271 - Prod Max 1: Difference between revisions
Andrada378 (talk | contribs) No edit summary |
Andrada378 (talk | contribs) |
||
| Line 26: | Line 26: | ||
== Rezolvare: == | == Rezolvare: == | ||
<syntaxhighlight lang="python"> | <syntaxhighlight lang="python"> | ||
def validate_input(n, V): | |||
if not (2 <= n <= 100000): | |||
raise ValueError("n trebuie să fie între 2 și 100.000 inclusiv.") | |||
for val in V: | |||
if not (-1000000 <= val <= 1000000): | |||
raise ValueError("Elementele listei trebuie să fie cuprinse în intervalul (-1.000.000, 1.000.000).") | |||
def gaseste_produsul(n, V): | def gaseste_produsul(n, V): | ||
max1, max2 = max(V[0], V[1]), min(V[0], V[1]) | max1, max2 = max(V[0], V[1]), min(V[0], V[1]) | ||
Latest revision as of 21:12, 3 January 2024
Cerința
Se dă un șir cu n numere întregi. Determinați cel mai mare număr care poate fi scris ca produs de două elemente ale șirului.
Date de intrare
Programul citește de la tastatură numărul n, iar apoi cele n elemente ale șirului.
Date de iesire
Programul va afisa pe ecran numarul determinat P
Restrictii si precizari
- 2 ≤ n ≤ 100.000
- elementele șirului vor fi cuprinse în intervalul (-1.000.000, 1.000.000)
Exemplu:
Intrare
7
-8 3 9 -1 -2 7 -10
Iesire
80
Rezolvare:
<syntaxhighlight lang="python"> def validate_input(n, V):
if not (2 <= n <= 100000):
raise ValueError("n trebuie să fie între 2 și 100.000 inclusiv.")
for val in V:
if not (-1000000 <= val <= 1000000):
raise ValueError("Elementele listei trebuie să fie cuprinse în intervalul (-1.000.000, 1.000.000).")
def gaseste_produsul(n, V):
max1, max2 = max(V[0], V[1]), min(V[0], V[1])
for i in range(2, n):
if V[i] > max1:
max2, max1 = max1, V[i]
elif V[i] > max2:
max2 = V[i]
min1, min2 = min(V[0], V[1]), max(V[0], V[1])
for i in range(2, n):
if V[i] < min1:
min2, min1 = min1, V[i]
elif V[i] < min2:
min2 = V[i]
P1 = min1 * min2 P2 = max1 * max2
return P1 if P1 > P2 else P2
n = int(input())
V = list(map(int, input().split()))
rezultat = gaseste_produsul(n, V) print(rezultat) </syntaxhighlight>