您的位置:首页 > 产品设计 > UI/UE

5504 GT and sequence

2015-10-18 10:27 447 查看
分析:题意就是给你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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: