Donada una seqüència d’n nombres reals, els quals es poden sumar i multiplicar posant parèntesis com es vulgui, però sense canviar l’ordre relatiu dels nombres, calculeu el mínim i el màxim dels resultats que es poden aconseguir.
Per exemple, si els nombres donats són −3, 0 i 5, es poden formar
(−3 + 0) + 5 = 2 , (−3 + 0) * 5 = −15 , (−3 * 0) + 5 = 5 , (−3 * 0) * 5 = 0 , |
−3 + (0 + 5) = 2 , −3 + (0 * 5) = −3 , −3 * (0 + 5) = −15 , −3 * (0 * 5) = 0 . |
En aquest cas el resultat mínim és −15 i el màxim és 5.
Entrada
L’entrada consisteix en diversos casos. Cada cas comença amb una n entre 1 i 200, seguida d’n nombres reals.
Sortida
Per a cada cas, escriviu els resultats mínim i màxim amb quatre decimals. Per fer-ho, poseu aquestes dues línies al principi del vostre main:
cout.setf(ios::fixed); cout.precision(4);
Els jocs de proves no tenen problems de precisió. Cap dels resultats intermedis serà mai més gran que 109 en valor absolut.
Input
3 -3 0 5 1 42 2 -2.32 -3.68 3 1 2 3 4 0.1 0.2 -0.3 0.2 5 -2 -3 -4 -5 -6
Output
-15.0000 5.0000 42.0000 42.0000 -6.0000 8.5376 5.0000 9.0000 -0.0800 0.2400 -720.0000 600.0000