class Solution {
public:
    /**
     * 最大乘积
     * @param A int整型一维数组 
     * @param ALen int A数组长度
     * @return long长整型
     */
    long long solve(int* A, int ALen) {
        int max1 = INT_MIN;
        int max2 = max1, max3 = max1;
        int min1 = INT_MAX;
        int min2 = min1;
        for (int i = 0; i < ALen; i++) {
            if (A[i] > max1) {
                max3 = max2;
                max2 = max1;
                max1 = A[i];
            } else if (A[i] > max2) {
                max3 = max2;
                max2 = A[i];
            } else if (A[i] > max3) {
                max3 = A[i];
            }
            if (A[i] < min1) {
                min2 = min1;
                min1 = A[i];
            } else if (A[i] < min2) {
                min2 = A[i];
            }
        }
        return max((long)min1*min2*max1, (long)max1*max2*max3);
        // write code here
    }
};