5504 GT and sequence

来源:互联网 发布:软件项目实施报告 编辑:程序博客网 时间:2024/05/17 06:39

分析:题意就是给你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;  }


0 0
原创粉丝点击