input: Write a Python function named `max_subarray_cost` that takes a list of integers `numbers` as input and returns the highest possible total cost obtainable by splitting the list into subarrays. Each subarray's cost is defined as: 
  
  cost(l, r) = nums[l] - nums[l + 1] + ... + nums[r] * (−1)^(r − l)
  
  Ensure that each element of the list belongs to one subarray. If the list is not split into subarrays (i.e., it remains as a whole), the cost is simply cost(0, n - 1).
  
  Examples:
  >>> numbers = [1,-2,3,4]
  10
  >>> numbers = [1,-1,1,-1]
  4
  
  Constraints:
  1 <= numbers.length <= 10^5
  -10^9 <= numbers[i] <= 10^9
output: def max_subarray_cost(numbers):
      n = len(numbers)
      max_ending_here = min_ending_here = max_so_far = numbers[0]
      for i in range(1, n):
          if i % 2 == 1:
              max_ending_here = max(numbers[i], max_ending_here - numbers[i])
              min_ending_here = min(numbers[i], min_ending_here - numbers[i])
          else:
              max_ending_here = max(numbers[i], max_ending_here + numbers[i])
              min_ending_here = min(numbers[i], min_ending_here + numbers[i])
          max_so_far = max(max_so_far, max_ending_here, min_ending_here)
      return max_so_far