5504 GT and sequence

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章