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: