ваш подход предполагает, что если произведение первых 2 элементов из отсортированного списка ниже, чем произведение последних 2 элементов, то вы просто используете произведение последних 3 элементов, но это не всегда так, поскольку произведение из последних 3 элементов может быть 0 или отрицательным (например: [-10, -9, -1, 0, 11, 20] или [-10, -9, -1, 11, 20])
вы можете использовать (при условии, что a
отсортировано):
res = max(a[0] * a[1] * a[-1], a[-1] * a[-2] * a[-3])