class Solution {
public:
int maxProduct(vector<int>& nums) {
int ret = nums[0], cmax = nums[0], cmin = nums[0];
for(int i = 1; i < nums.size(); i++) {
int temp = cmax;
cmax = max(max(cmax*nums[i], cmin*nums[i]), nums[i]);
cmin = min(min(temp*nums[i], cmin*nums[i]), nums[i]);
ret = max(cmax, ret);
}
return ret;
}
};