// you can also use includes, for example:
#include <algorithm>
#include <climits>
int solution(vector<int> &A) {
// write your code in C++98
//...sort A first
sort(A.begin(), A.end());
//...enumerate Q, and then divide to 4 cases, keep record of globalMax
int globalMax = INT_MIN;
int n = A.size();
for(int Q = 1; Q < n-1; ++Q)
{
int localMax;
if(A[Q] > 0)
{
if(A[Q-1] < 0) localMax = A[Q-1]*A[Q]*A[Q+1];
else if(A[Q-1] == 0) localMax = 0;
else localMax = A[Q-1]*A[Q]*A[n-1];
}
else if(A[Q] == 0) localMax = 0;
else//A[Q] < 0
{
if(A[n-1] < 0) localMax = A[Q-1]*A[Q]*A[n-1];
else if(A[n-1] == 0) localMax = 0;
else localMax = A[0]*A[Q]*A[n-1];
}
globalMax = max(globalMax, localMax);
}
//...return result
return globalMax;
}