## Symbolic Representation

The problem can be converted into a symbolic representation as follows:

- **Variables:**
  - $x_1$ : Number of newspaper advertisements
  - $x_2$ : Number of television advertisements

## Objective Function and Constraints

- **Objective Function:** Maximize $30000x_1 + 50000x_2$
- **Constraints:**
  1. Budget constraint: $2500x_1 + 5000x_2 \leq 200000$
  2. Newspaper advertisements constraint: $12 \leq x_1 \leq 24$
  3. Television advertisements constraint: $x_2 \geq 10$
  4. Non-negativity constraint: $x_1, x_2 \geq 0$ and $x_1, x_2$ are integers.

## JSON Representation

```json
{
    'sym_variables': [('x1', 'newspaper advertisements'), ('x2', 'television advertisements')],
    'objective_function': '30000*x1 + 50000*x2',
    'constraints': [
        '2500*x1 + 5000*x2 <= 200000',
        '12 <= x1 <= 24',
        'x2 >= 10',
        'x1, x2 >= 0 and x1, x2 are integers'
    ]
}
```

## Gurobi Code

```python
import gurobipy as gp

# Create a new model
model = gp.Model("Media_Selection")

# Define variables
x1 = model.addVar(lb=12, ub=24, vtype=gp.GRB.INTEGER, name="newspaper_advertisements")
x2 = model.addVar(lb=10, vtype=gp.GRB.INTEGER, name="television_advertisements")

# Objective function: Maximize exposure
model.setObjective(30000*x1 + 50000*x2, gp.GRB.MAXIMIZE)

# Budget constraint
model.addConstr(2500*x1 + 5000*x2 <= 200000, name="budget_constraint")

# Solve the model
model.optimize()

# Print the results
if model.status == gp.GRB.OPTIMAL:
    print("Optimal Solution:")
    print(f"Newspaper Advertisements: {x1.varValue}")
    print(f"Television Advertisements: {x2.varValue}")
    print(f"Maximum Exposure: {30000*x1.varValue + 50000*x2.varValue}")
else:
    print("The model is infeasible.")
```