分析:題意就是給你n個數,讓你至少選一個數,使得你選的這些數的乘積最大。如果只有1個數,就直接輸出了,如果有正數或負數的個數大於2,答案肯定大於0,否則答案爲0.
# include <stdio.h>
# include <algorithm>
using namespace std;
int main()
{
int i,n,T,t,f;
__int64 x,ans,a[100];
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
if(n==1)
{
scanf("%I64d",&x);
printf("%I64d\n",x);
continue;
}
t=f=0; ans=1;
for(i=0;i<n;i++)
{
scanf("%I64d",&x);
if(x>0)
ans=ans*x,f=1;
else if(x<0)
a[t++]=x;
}
if(f==0&&t<=1)
{
printf("0\n");
continue;
}
sort(a,a+t);
for(i=0;i<t-1;i+=2)
ans=ans*a[i]*a[i+1];
printf("%I64d\n",ans);
}
return 0;
}