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

- Decision Variables: Let \(L\) be the number of long answer questions answered and \(M\) be the number of multiple choice questions answered.
- Objective Function: The goal is to maximize the total score. Since each long answer question is worth 10 points and each multiple choice question is worth 2 points, the objective function can be written as: Maximize \(10L + 2M\).
- Constraints:
  1. Time constraint: \(L + M \leq 15\) (since you have enough time to answer at most 15 questions in total).
  2. Minimum requirement for long answer questions: \(L \geq 5\).
  3. Minimum requirement for multiple choice questions: \(M \geq 7\).
  4. Upper limit on each type of question due to time restriction: \(L \leq 11\) and \(M \leq 11\).

Given these constraints, the problem can be formulated as a linear programming problem.

```python
from gurobipy import *

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

# Define decision variables
L = m.addVar(vtype=GRB.INTEGER, name="Long_Answer_Questions")
M = m.addVar(vtype=GRB.INTEGER, name="Multiple_Choice_Questions")

# Set the objective function
m.setObjective(10*L + 2*M, GRB.MAXIMIZE)

# Add constraints
m.addConstr(L + M <= 15, "Total_Time_Constraint")
m.addConstr(L >= 5, "Min_Long_Answer_Requirement")
m.addConstr(M >= 7, "Min_Multiple_Choice_Requirement")
m.addConstr(L <= 11, "Max_Long_Answer_Limit")
m.addConstr(M <= 11, "Max_Multiple_Choice_Limit")

# Optimize the model
m.optimize()

# Print out the results
if m.status == GRB.OPTIMAL:
    print(f"Optimal Solution: {L.varName} = {int(L.x)} and {M.varName} = {int(M.x)}")
    print(f"Maximum Score: {m.objVal}")
else:
    print("The model is infeasible.")
```