## Problem Description and Formulation

The problem is a classic example of a linear programming problem. We need to maximize the profit by deciding how many acres of wheat and corn to grow, given the constraints on maintenance cost and care hours.

Let's define the variables:
- \(W\): acres of wheat
- \(C\): acres of corn

The objective function to maximize profit is:
\[ \text{Maximize:} \quad 50W + 90C \]

Subject to the constraints:
1. Land constraint: \( W + C \leq 90 \) (total acres of land)
2. Maintenance cost constraint: \( 10W + 20C \leq 1400 \) (total maintenance cost)
3. Care hours constraint: \( 4W + 3C \leq 90 \) (total care hours)
4. Non-negativity constraints: \( W \geq 0, C \geq 0 \) (acres cannot be negative)

## Gurobi Code

```python
import gurobi

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

    # Define variables
    W = model.addVar(lb=0, name="Wheat_Acres")
    C = model.addVar(lb=0, name="Corn_Acres")

    # Objective function: Maximize profit
    model.setObjective(50 * W + 90 * C, gurobi.GRB.MAXIMIZE)

    # Constraints
    model.addConstr(W + C <= 90, name="Land_Constraint")
    model.addConstr(10 * W + 20 * C <= 1400, name="Maintenance_Cost_Constraint")
    model.addConstr(4 * W + 3 * C <= 90, name="Care_Hours_Constraint")

    # Optimize
    model.optimize()

    # Print solution
    if model.status == gurobi.GRB.OPTIMAL:
        print(f"Optimal acres of wheat: {W.varValue}")
        print(f"Optimal acres of corn: {C.varValue}")
        print(f"Maximal profit: {model.objVal}")
    else:
        print("The problem is infeasible")

if __name__ == "__main__":
    solve_optimization_problem()
```