## Problem Description and Formulation

The problem is a classic example of a linear programming problem. We have two variables: the number of acres of corn (`x_c`) and the number of acres of peas (`x_p`). The objective is to maximize the total profit, given by `200 * x_c + 250 * x_p`.

We have several constraints:

1. **Land constraint**: We have 40 acres of land available, so `x_c + x_p <= 40`.
2. **Fertilizer constraint**: Each acre of corn requires $50 worth of fertilizer, and each acre of peas requires $60 worth of fertilizer. We have $4350 available, so `50 * x_c + 60 * x_p <= 4350`.
3. **Time constraint**: Each acre of corn requires 60 minutes of time, and each acre of peas requires 90 minutes of time. We have 6000 minutes available, so `60 * x_c + 90 * x_p <= 6000`.
4. **Non-negativity constraint**: We cannot have a negative number of acres, so `x_c >= 0` and `x_p >= 0`.

## Gurobi Code

```python
import gurobi

def solve_optimization_problem():
    # Create a new model
    model = gurobi.Model()

    # Define the variables
    x_c = model.addVar(name="corn", lb=0, ub=40, vtype=gurobi.GRB.CONTINUOUS)
    x_p = model.addVar(name="peas", lb=0, ub=40, vtype=gurobi.GRB.CONTINUOUS)

    # Define the objective function
    model.setObjective(200 * x_c + 250 * x_p, gurobi.GRB.MAXIMIZE)

    # Add constraints
    model.addConstr(x_c + x_p <= 40, name="land_constraint")
    model.addConstr(50 * x_c + 60 * x_p <= 4350, name="fertilizer_constraint")
    model.addConstr(60 * x_c + 90 * x_p <= 6000, name="time_constraint")

    # Optimize the model
    model.optimize()

    # Print the results
    if model.status == gurobi.GRB.OPTIMAL:
        print(f"Optimal solution: Acres of corn = {x_c.varValue:.2f}, Acres of peas = {x_p.varValue:.2f}")
        print(f"Maximum profit: ${model.objVal:.2f}")
    else:
        print("No optimal solution found")

solve_optimization_problem()
```