input: Write a python function to solve a linear programming problem to maximize profit using the given constraints and objective function.
  assert solve_lp_problem(["a", "b", "c"], [200, 150, 250], [[1, 1, 1], [300, 250, 250]], [4, 1000]) == ({"a": 1.0, "b": 1.0, "c": 2.0}, 1050.0)
  assert solve_lp_problem(["x", "y"], [100, 200], [[1, 2], [3, 1]], [4, 5]) == ({"x": 1.0, "y": 1.5}, 400.0)
  assert solve_lp_problem(["p", "q", "r"], [50, 100, 150], [[1, 1, 1], [200, 150, 100]], [3, 400]) == ({"p": 0.0, "q": 0.66666667, "r": 2.3333333}, 400.0)
output: def solve_lp_problem(variables, profit_coeffs, constraints, bounds):
      from scipy.optimize import linprog
  
      # Objective function coefficients (negative for maximization)
      c = [-x for x in profit_coeffs]
  
      # Coefficients of the constraints
      A = constraints
  
      # Bounds for the constraints
      b = bounds
  
      # Solve the linear programming problem
      result = linprog(c, A_ub=A, b_ub=b, bounds=(0, None), method='highs')
  
      # Extract results
      solution = {var: result.x[i] for i, var in enumerate(variables)}
      max_profit = -result.fun  # Since we negated the profit coefficients
  
      return solution, max_profit