To solve this problem, we first need to define the decision variables, the objective function, and the constraints.

Let's denote:
- $w$ as the number of acres for wheat,
- $c$ as the number of acres for corn.

The objective is to maximize profit. The profit per acre from wheat is $50, and from corn is $90. Therefore, the total profit can be represented by the function: $50w + 90c$.

There are two main constraints:
1. **Maintenance Cost Constraint**: Each acre of wheat requires $10 in maintenance, and each acre of corn requires $20. The total budget for maintenance is $1400. This gives us the inequality: $10w + 20c \leq 1400$.
2. **Time Constraint**: Each acre of wheat requires 4 hours of care, and each acre of corn requires 3 hours. There are 90 hours available for care, leading to the inequality: $4w + 3c \leq 90$.
3. **Land Constraint**: The total land available is 90 acres. Thus, we have: $w + c \leq 90$.
4. **Non-negativity Constraints**: Since Samuel cannot grow a negative number of acres of wheat or corn, we also have: $w \geq 0$ and $c \geq 0$.

Now, let's express this problem in Gurobi code using Python:

```python
from gurobipy import *

# Create a model
m = Model("Farm_Profit")

# Define the decision variables
w = m.addVar(lb=0, vtype=GRB.CONTINUOUS, name="wheat_acres")
c = m.addVar(lb=0, vtype=GRB.CONTINUOUS, name="corn_acres")

# Objective function: Maximize profit
m.setObjective(50*w + 90*c, GRB.MAXIMIZE)

# Constraints
m.addConstr(10*w + 20*c <= 1400, "maintenance_budget")
m.addConstr(4*w + 3*c <= 90, "care_time")
m.addConstr(w + c <= 90, "land_availability")

# Optimize the model
m.optimize()

# Print the results
if m.status == GRB.OPTIMAL:
    print("Optimal solution found:")
    print(f"Wheat acres: {w.x}")
    print(f"Corn acres: {c.x}")
    print(f"Maximum profit: ${50*w.x + 90*c.x:.2f}")
else:
    print("No optimal solution found")
```