2271 - Prod Max 1
Cerința[edit | edit source]
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[edit | edit source]
Programul citește de la tastatură numărul n, iar apoi cele n elemente ale șirului.
Date de iesire[edit | edit source]
Programul va afisa pe ecran numarul determinat P
Restrictii si precizari[edit | edit source]
- 2 ≤ n ≤ 100.000
- elementele șirului vor fi cuprinse în intervalul (-1.000.000, 1.000.000)
Exemplu:[edit | edit source]
Intrare
7
-8 3 9 -1 -2 7 -10
Iesire
80
Rezolvare:[edit | edit source]
<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>