from collections import deque
num_n = int(input())
nums = [int(i) for i in input().strip().split()]
max_3 = deque(maxlen=3)
min_2 = deque(maxlen=2)
def insertmax(a, max_3):
if a < max(max_3):
if a > min(max_3):
l = list(max_3)
l.append(a)
l.sort()
return deque(l[1::], 3)
else:
return max_3
else:
max_3.append(a)
return max_3
def insertmin(a, min_2):
if a < min(min_2):
min_2.append(a)
return min_2
else:
if a < min_2[0]:
# print(min_2, a)
min_2[0] = a
return min_2
def sort_dequen(a, maxlen):
a = list(a)
a.sort(reverse=True)
return deque(a, maxlen)
def sort_deque(a, maxlen):
a = list(a)
a.sort()
return deque(a, maxlen)
for i in nums:
# if i == -6974:
# print(max_3, min_2)
if len(max_3) >= 3 and i > 0:
max_3 = insertmax(i, max_3)
if len(max_3) < 3 and i > 0:
max_3.append(i)
max_3 = sort_deque(max_3, 3)
if len(min_2) < 2 and i < 0:
min_2.append(i)
min_2 = sort_dequen(min_2, 2)
if len(min_2) >= 2 and i < 0:
min_2 = insertmin(i, min_2)
a = 0
b = 0
if len(max_3) == 3:
a = max_3[0] * max_3[1] * max_3[2]
if len(min_2) == 2:
b = min_2[0] * min_2[1] * max_3[-1]
if a > b:
print(a)
else:
print(b)
贪心,也就是把会影响最终结果的数据cache起来

京公网安备 11010502036488号