
    Given a sequence of daily credit score fluctuations, determine the time period that shows the most significant cumulative impact on a customer's creditworthiness by finding the consecutive days whose credit score changes, when multiplied together, yield the highest product. This analysis helps identify periods of consistent credit behavior patterns, whether positive or negative, to better assess the customer's financial stability.
    

    
def max_subarray_product(arr):
    """
    Given a sequence of daily credit score fluctuations, determine the time period that shows the most significant cumulative impact on a customer's creditworthiness by finding the consecutive days whose credit score changes, when multiplied together, yield the highest product. This analysis helps identify periods of consistent credit behavior patterns, whether positive or negative, to better assess the customer's financial stability.
    

    """
def max_subarray_product(arr):
    """
    Given a sequence of daily credit score fluctuations, determine the time period that shows the most significant cumulative impact on a customer's creditworthiness by finding the consecutive days whose credit score changes, when multiplied together, yield the highest product. This analysis helps identify periods of consistent credit behavior patterns, whether positive or negative, to better assess the customer's financial stability.
    

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