Create a custom field on the account. Use an Apex trigger to update the field when contacts are added or deleted.
Cant do rollup summary between Account and contact.
If there is a master detail relationship between the parent and child object, then as Katie mentioned , you can go for a rollup summary field.
If it is a lookup relationship between the parent and child object, then you need to create a trigger on child object that will update the count field (you need to create a custom field to store the count of child records) on parent object. You need to handle the insert, delete and undelete events in this trigger. You may also have to handle the update event in case your lookup relationship allows reparenting of records.
The answer to this question is B. The marketing manager would need to create a custom field on the account. The APEX trigger can be used in order to update the field. The field would need to be updated every time some data are removed or changed.
You cannot do letter D because there is no obvious relationship with the things that the marketing manager would like to know about. Doing letter B can be very effective for the marketing manager to find details that he may be looking for immediately. The update can also help remove unneeded data that may be causing the rest of the data to become inconsistent.