maximum product subarray

O(n), maintain local max and min