Solução escrita por Vitor Veiga
Conhecimento prévio necessário:
Resumindo o problema, temos duas posições e
representadas em um eixo cartesiano e queremos o menor número possível de movimentos dos tipos
ou
(vai uma casa para nordeste ou para oeste) para ir da primeira até a segunda posição.
Dessa forma, vamos dividir o problema em duas partes. Primeiro temos que garantir que, no eixo y, Andremfq não está acima da medalha, pois é impossível ir para baixo no eixo y. Cumprindo essa condição, vamos calcular quantos movimentos do tipo 1 são necessários para chegar na ordenada da medalha,
.
Depois, Andremfq estará na posição que, para que seja possível chegar no destino, não pode estar à esquerda da medalha, pois caso ele realizasse um movimento do tipo 1, indo para a direita, ele também estaria saindo da ordenada da medalha, sem possibilidade de voltar. Então calculamos quantos movimentos
ele deve fazer para chegar na medalha,
.
Retornamos então o número total de movimentos . Segue o passo a passo do segundo caso teste:
Recomendamos que você tente implementar o problema antes de ver o código. Veja a implementação nesse link.