Maximum Product (Codeforces 1406B)
Tags: Greedy, sortings

You are given an array of integers $$$a_1,a_2,\ldots,a_n$$$. Find the maximum possible value of $$$a_ia_ja_ka_la_t$$$ among all five indices $$$(i, j, k, l, t)$$$ ($$$i<j<k<l<t$$$).

Input: The input consists of multiple test cases. The first line contains an integer $$$t$$$ ($$$1\le t\le 2 \cdot 10^4$$$) — the number of test cases. The description of the test cases follows.The first line of each test case contains a single integer $$$n$$$ ($$$5\le n\le 10^5$$$) — the size of the array.The second line of each test case contains $$$n$$$ integers $$$a_1,a_2,\ldots,a_n$$$ ($$$-3\times 10^3\le a_i\le 3\times 10^3$$$) — given array.It's guaranteed that the sum of $$$n$$$ over all test cases does not exceed $$$2\cdot 10^5$$$.

Output: For each test case, print one integer — the answer to the problem.

Note: In the first test case, choosing $$$a_1,a_2,a_3,a_4,a_5$$$ is a best choice: $$$(-1)\cdot (-2) \cdot (-3)\cdot (-4)\cdot (-5)=-120$$$.In the second test case, choosing $$$a_1,a_2,a_3,a_5,a_6$$$ is a best choice: $$$(-1)\cdot (-2) \cdot (-3)\cdot 2\cdot (-1)=12$$$.In the third test case, choosing $$$a_1,a_2,a_3,a_4,a_5$$$ is a best choice: $$$(-1)\cdot 0\cdot 0\cdot 0\cdot (-1)=0$$$.In the fourth test case, choosing $$$a_1,a_2,a_3,a_4,a_6$$$ is a best choice: $$$(-9)\cdot (-7) \cdot (-5)\cdot (-3)\cdot 1=945$$$.

Sample Inputs:
4
5
-1 -2 -3 -4 -5
6
-1 -2 -3 1 2 -1
6
-1 0 0 0 -1 -1
6
-9 -7 -5 -3 -2 1

Sample Outputs:
-120
12
0
945

Solution (Python):
for i in [*open(0)][2::2]:
    a = sorted(map(int, i.split()))
    print(max(a[-1] * a[-2] * a[-3] * a[-4] * a[-5], a[-1] * a[-2] * a[-3] * a[1] * a[0], a[-1] * a[3] * a[2] * a[1] * a[0]))

Solution (Python):
for e in [*open(0)][2::2]:
    l = sorted(map(int, e.split()))
    print(max(l[0] * l[1] * l[2] * l[3] * l[-1], l[0] * l[1] * l[-3] * l[-2] * l[-1], l[-5] * l[-4] * l[-3] * l[-2] * l[-1]))

Solution (Python):
import math
for i in [*open(0)][2::2]:
    a = sorted(map(int, i.split(' ')))
    print(max((math.prod(a[:i] + a[i - 5:]) for i in range(5))))