```
int maximumProduct(vector<int>& nums) {
    int n = nums.size();
    
    // Sort the array
    sort(nums.begin(), nums.end());
    
    // Maximum of product of the last three elements or the first two elements and the last element
    return max(nums[n-1]*nums[n-2]*nums[n-3], nums[0]*nums[1]*nums[n-1]);
}
```
This code sorts the array and returns the maximum of either the product of the last three elements or the product of the first two and the last element.
Scrivete una soluzione per il seguente problema in c++: Dato un array di interi nums, trova tre numeri il cui prodotto è massimo e restituisci il prodotto massimo.