
    Given a sequence of vehicle performance readings where positive values indicate normal operation and negative values indicate maintenance concerns, identify the continuous time period that best captures the most significant pattern of either consistent optimal performance or systematic deterioration. The pattern's significance is determined by multiplying the performance values within that time period, where a high positive product suggests sustained good performance and a high negative product indicates critical maintenance needs.
    

    
def max_subarray_product(arr):
    """
    Given a sequence of vehicle performance readings where positive values indicate normal operation and negative values indicate maintenance concerns, identify the continuous time period that best captures the most significant pattern of either consistent optimal performance or systematic deterioration. The pattern's significance is determined by multiplying the performance values within that time period, where a high positive product suggests sustained good performance and a high negative product indicates critical maintenance needs.
    

    """
def max_subarray_product(arr):
    """
    Given a sequence of vehicle performance readings where positive values indicate normal operation and negative values indicate maintenance concerns, identify the continuous time period that best captures the most significant pattern of either consistent optimal performance or systematic deterioration. The pattern's significance is determined by multiplying the performance values within that time period, where a high positive product suggests sustained good performance and a high negative product indicates critical maintenance needs.
    

    """
    n = len(arr)
    max_ending_here = 1
    min_ending_here = 1
    max_so_far = 0
    flag = 0
    for i in range(0, n):
        if arr[i] > 0:
            max_ending_here = max_ending_here * arr[i]
            min_ending_here = min(min_ending_here * arr[i], 1)
            flag = 1
        elif arr[i] == 0:
            max_ending_here = 1
            min_ending_here = 1
        else:
            temp = max_ending_here
            max_ending_here = max(min_ending_here * arr[i], 1)
            min_ending_here = temp * arr[i]
        if max_so_far < max_ending_here:
            max_so_far = max_ending_here
    if flag == 0 and max_so_far == 0:
        return 0
    return max_so_far