Escrito por Lúcio Figueiredo
Conhecimento prévio necessário:
A solução deste problema utiliza o seguinte lema:
Lema: Defina como o valor final que todos os gravetos possuirão após as operações. O valor
que minimiza o custo das operações é a mediana dos valores iniciais dos gravetos.
A mediana de um conjunto de inteiros é o valor que se encontra na posição
do mesmo conjunto após ser ordenado crescentemente.
Assim, sendo a mediana do conjunto de números dado, o lema acima nos indica que o menor custo necessário é igual a
.
Como é possível encontrar a mediana do vetor em (só é necessário ordená-lo), a complexidade final é
. Confira o código abaixo para melhor entendimento: