input: Write a function that takes an array as input and returns the maximum sum of any two distinct elements from the array, improving the time complexity of the provided function. The provided function has a time complexity of O(n^2). The improved function should have a time complexity of O(n).
  
  def find_max_sum(arr):
      max_sum = 0
      left = 0
      right = len(arr) - 1
      while left < right:
          if arr[left] + arr[right] > max_sum:
              max_sum = arr[left] + arr[right]
          if arr[left] > arr[right]:
              right -= 1
          else:
              left += 1
      return max_sum
  
  assert find_max_sum([1, 2, 3, 4]) == 7
  assert find_max_sum([4, 3, 2, 1]) == 7
  assert find_max_sum([5, 10, 12, 13]) == 25
  assert find_max_sum([1, 3, 1, 2]) == 5
  assert find_max_sum([1, 1, 1, 1]) == 2
output: def find_max_sum(arr):
      if len(arr) < 2:
          return 0
      first_max = max(arr[0], arr[1])
      second_max = min(arr[0], arr[1])
      for num in arr[2:]:
          if num > first_max:
              second_max = first_max
              first_max = num
          elif num > second_max:
              second_max = num
      return first_max + second_max