#include <bits/stdc++.h> using namespace std; int n; int a[200001]; int dp1[200001]={0},dp2[200001]={0}; int main() { cin>>n; for(int i=0;i<n;i++) { cin>>a[i]; } if(a[0]>=0) dp1[0]=a[0]; else dp2[0]=a[0]; for(int i=1;i<n;i++)//分别记录前i项正数最大值和负数最小值 { if(a[i]>=0) { dp1[i]=max(dp1[i-1]*a[i],a[i]); dp2[i]=min(dp2[i-1]*a[i],a[i]); } else { dp1[i]=dp2[i-1]*a[i]; dp2[i]=min(dp1[i-1]*a[i],a[i]); } } int max=-100; if(n!=1)//大于1的长度中一定存在非负解 { for(int i=0;i<n;i++) { if(dp1[i]>max) max=dp1[i]; } cout<<max<<endl; } if(n==1) cout<<a[0]<<endl;//只有一个数时分开讨论 }