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起来