Maximum Product Subarray Dynamic Programming