2271 - Prod Max 1

From Bitnami MediaWiki

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>