A questão realmente foi mal formulada. Era necessário saber qual a estratégia de alocação de memória (FIFO, best fit, worst fit...?) para poder determinar qual processo sai e qual entra na memória. Eu entraria com recurso nessa questão.
.
Mas enfim, assumindo que a estratégia seja a best fit conforme comentado com o colega acima, ficaria assim:
.
Partições de memória:
partição de 500MB: [totalmente ocupada pelo sistema operacional]
partição de 200mb: []
partição de 100mb: []
partição de 74mb: []
partição de 300mb: []
.
.
Depois ele carrega os programas A, B, C, D e E que precisam, respectivamente de 99, 70, 250 e 190 megabytes de espaço. Usando a estratégia best fit (coloca o processo na partição com tamanho mais próximo do necessário, sem que seja menor), temos o seguinte:
partição de 500mb: ocupado pelo SO
partição de 200mb: processo D [190mb] => 200 - 190 = 10mb de fragmentação interna
partição de 100mb: processo A [99mb] => 100 - 99 = 1mb de fragmentação interna
partição de 74mb: processo B [70mb] => 74 - 70 = 4mb de fragmentação interna
partição de 300mb: processo C [250mb] => 300 - 250 = 50mb de fragmentação interna
Total de 65mb de fragmentação interna.
.
.
Agora a questão pede pra alocar mais um processo, o processo E de 87mb, em um dos endereços acima. Como ele é um processo novo, ele vai pra memória principal, e não para o swap. Por isso que precisamos de um dos endereços acima. Usando o best fit, ele vai ser alocado na partição de 100mb, já que a única partição menor que essa tem 74mb, e isso não é o suficiente pra alocar esse processo. Fica assim:
partição de 500mb: ocupado pelo SO
partição de 200mb: processo D [190mb] => 200 - 190 = 10mb de fragmentação interna
partição de 100mb: processo E [87mb] => 100 - 99 = 13mb de fragmentação interna
partição de 74mb: processo B [70mb] => 74 - 70 = 4mb de fragmentação interna
partição de 300mb: processo C [250mb] => 300 - 250 = 50mb de fragmentação interna
Total de 77mb de fragmentação interna.
.
Sendo assim, alternativa correta: C.