Solução Informática - Nível Avançado - Semana 9

Solução por Thiago Mota

Primeiramente, uma rotação para a esquerda é a mesma coisa de n-1 rotações para a direita e vice-versa. Então só precisamos fazer rotações de um tipo, vamos fazer para a direita.

Ainda mais, uma rotação para a direita em b é a mesma coisa que uma rotação para a esquerda em a e vice-versa. Logo não precisamos fazer rotações em b.

Agora o problema foi reduzido a achar o número de máximo de pares que combinam olhando apenas rotações em a. Como n rotações em a resulta em a novamente, temos apenas n-1 rotações para a direita possíveis.

Como ambos os vetores são permutações, cada elemento a só vai combinar com o seu correspondente em b em apenas uma rotação possível. Por exemplo, se a é {2, 3, 1} e b é {3, 1, 2}, o número 3 em a vai combinar com o número 3 em b em apenas uma rotação para a direita possível. Então para cada elemento em a temos que achar o número de rotações para ele encontrar seu correspondente em b e olhar quantos outros pares também combinam. O maior entre eles é a resposta, segue o código.