
    Given a sequence of daily patient readmission risk scores, find the time period that shows the most significant pattern of consistent risk by calculating the product of consecutive scores. The risk scores can be positive or negative, where positive values indicate increased risk and negative values indicate decreased risk, and your goal is to identify the subset of consecutive days where the product of risk scores reaches its maximum value.
    

    
def max_subarray_product(arr):
    """
    Given a sequence of daily patient readmission risk scores, find the time period that shows the most significant pattern of consistent risk by calculating the product of consecutive scores. The risk scores can be positive or negative, where positive values indicate increased risk and negative values indicate decreased risk, and your goal is to identify the subset of consecutive days where the product of risk scores reaches its maximum value.
    

    """
def max_subarray_product(arr):
    """
    Given a sequence of daily patient readmission risk scores, find the time period that shows the most significant pattern of consistent risk by calculating the product of consecutive scores. The risk scores can be positive or negative, where positive values indicate increased risk and negative values indicate decreased risk, and your goal is to identify the subset of consecutive days where the product of risk scores reaches its maximum value.
    

    """
    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