import java.util.Arrays; import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); int[] a = new int[n]; for(int i = 0; i < n; i++)a[i] = in.nextInt(); // 包含第i个数在内的连续子数组的乘积的最大值、最小值(用于维护负数乘以负数得到正数的情况) int[] dp_min = new int[n]; int[] dp_max = new int[n]; Arrays.fill(dp_min, Integer.MAX_VALUE); Arrays.fill(dp_max, Integer.MIN_VALUE); dp_min[0] = dp_max[0] = a[0]; for(int i = 1; i < n; i++){ dp_min[i] = Math.min(Math.min(dp_min[i-1]*a[i], dp_max[i-1]*a[i]), a[i]); dp_max[i] = Math.max(Math.max(dp_min[i-1]*a[i], dp_max[i-1]*a[i]), a[i]); } int max = Integer.MIN_VALUE; for(int i = 0; i < n; i++){ max = Math.max(max, Math.max(dp_min[i], dp_max[i])); } System.out.println(max); } }