2 条题解

  • 1
    @ 2025-10-2 20:12:55
    #include<queue>
    #include<math.h>
    #include<stdio.h>
    #include<iostream>
    #include<vector>
    #include<iomanip>
    #include<algorithm>
    #include<cstdio> 
    #include<utility>
    #include<cstring>
    #include<stack>
    #include<fstream>
    #include<string>
    using namespace std;
    #define LL long long
    const int N = 1e5 + 10;
    const int INF = 0x3f3f3f3f;
    int t , n , a;
    int sumz , sumf , sum0;
    long long zup[6] , zdown[6] , fup[6] , fdown[6];
    long long maxn;
    void init()
    {
    	sumz = 0;
    	sumf = 0;
    	sum0 = 0;
    	memset( zup , 20005 , sizeof(zup) );
    	memset( zdown , -20005 , sizeof(zdown) );
    	memset( fup , 20005 , sizeof(fup) );
    	memset( fdown , -20005 , sizeof(fdown) );
    	maxn =- 20005;
    	return;
    }
    bool cmp_up( int a , int b )
    {
    	return a < b;
    }
    bool cmp_down( int a , int b )
    {
    	return a > b;
    }
    int main()
    {
    	cin >> t;
    	for ( int s = 1 ; s <= t ; s++ )
    	{
    		cin >> n;
    		init();
    		for ( int i = 1 ; i <= n ; i++ )
    		{
    			cin >> a;
    			if ( a > 0 )
    			{
    				sumz++;
    				zup[5] = a;
    				zdown[5] = a;
    				sort( zup + 1 , zup + 6 , cmp_up );
    				sort( zdown + 1 , zdown + 6 , cmp_down );
    			}
    			else if ( a == 0 )
    			{
    				sum0++;
    			}
    			else if ( a < 0 )
    			{
    				sumf++;
    				fup[5] = a;
    				fdown[5] = a;
    				sort( fup + 1 , fup + 6 , cmp_up );
    				sort( fdown + 1 , fdown + 6 , cmp_down );
    			}
    		}
    		if ( sum0 > 0 )
    		{
    			maxn = max( maxn , (long long)0 );
    		}
    		if ( sumz >= 4 )
    		{
    			maxn = max( maxn , zdown[1] * zdown[2] * zdown[3] * zdown[4] );
    		}
    		if ( sumz >= 3 && sumf >= 1 )
    		{
    			maxn = max( maxn , zup[1] * zup[2] * zup[3] * fdown[1] );
    		}
    		if ( sumz >= 2 && sumf >= 2 )
    		{
    			maxn = max( maxn , zdown[1] * zdown[2] * fup[1] * fup[2] );
    		}
    		if ( sumz >= 1 && sumf >= 3 )
    		{
    			maxn = max( maxn , zup[1] * fdown[1] * fdown[2] * fdown[3] );
    		}
    		if ( sumf >= 4 )
    		{
    			maxn = max( maxn , fup[1] * fup[2] * fup[3] * fup[4] );
    		}
    		cout << maxn << endl;
    	}
    	return 0;
    }
    

    信息

    ID
    2983
    时间
    1000ms
    内存
    512MiB
    难度
    8
    标签
    递交数
    256
    已通过
    34
    上传者