


"""simple docstring"""
def 		lowercase							(     _snake_case						:      list[int]     )     ->List[Any]:
	"""simple docstring"""





	if not numbers:
		return 0

	if not isinstance(__a     ,   (list, tuple)     ) or not all(
	    isinstance(__a     ,   __a     ) for number in numbers     ):
		raise ValueError('''numbers must be an iterable of integers'''     )

	__snake_case	:						Any						=				numbers[0]

	for i in range(1     ,   len(__a     )     ):
		# update the maximum and minimum subarray products
		__snake_case	:						str						=				numbers[i]
		if number < 0:
			__snake_case	:						List[Any]						=				min_till_now, max_till_now
		__snake_case	:						Optional[int]						=				max(__a     ,   max_till_now * number     )
		__snake_case	:						Tuple						=				min(__a     ,   min_till_now * number     )

		# update the maximum product found till now
		__snake_case	:						Union[str, Any]						=				max(__a     ,   __a     )

	return max_prod







'''simple docstring'''







from __future__ import annotations

__lowerCAmelCase         =    [-1_0, -5, 0, 5, 5.1, 1_1, 1_3, 2_1, 3, 4, -2_1, -1_0, -5, -1, 0]
__lowerCAmelCase         =    [-5, 0, 5, 5.1, 1_1, 1_3, 2_1, -1, 4, -1, -1_0, -5, -1, 0, -1]





def 					UpperCAmelCase_		(__a      :    list[float] ):






   """simple docstring"""

   _a				:	Optional[int]			=   []
   _a				:	int			=   len(__a )

   for i in range(__a ):
      _a				:	float			=   -1
      for j in range(i + 1 ,	__a ):
         if arr[i] < arr[j]:
            _a				:	Any			=   arr[j]
            break
      result.append(__a )
   return result





def 					UpperCAmelCase_		(__a      :    list[float] ):






   """simple docstring"""

   _a				:	Tuple			=   []
   for i, outer in enumerate(__a ):
      _a				:	float			=   -1
      for inner in arr[i + 1 :]:
         if outer < inner:
            _a				:	Dict			=   inner
            break
      result.append(__a )
   return result





def 					UpperCAmelCase_		(__a      :    list[float] ):






   """simple docstring"""

   _a				:	int			=   len(__a )
   _a				:	list[float]			=   []
   _a				:	list[float]			=   [-1] * arr_size

   for index in reversed(range(__a ) ):
      if stack:
         while stack[-1] <= arr[index]:
            stack.pop()
            if not stack:
               break
      if stack:
         _a				:	Dict			=   stack[-1]
      stack.append(arr[index] )
   return result


if __name__ == "__main__":
  from doctest import testmod
  from timeit import timeit

  testmod()
  print(next_greatest_element_slow(arr))
  print(next_greatest_element_fast(arr))
  print(next_greatest_element(arr))

  __lowerCAmelCase         =    (
      """from __main__ import arr, next_greatest_element_slow, """
      """next_greatest_element_fast, next_greatest_element"""
  )
  print(
      """next_greatest_element_slow():""",
      timeit("""next_greatest_element_slow(arr)""", setup=setup),
  )
  print(
      """next_greatest_element_fast():""",
      timeit("""next_greatest_element_fast(arr)""", setup=setup),
  )
  print(
      """     next_greatest_element():""",
      timeit("""next_greatest_element(arr)""", setup=setup),
  )



