Solução por Thiago Mota
Primeiramente, uma rotação para a esquerda é a mesma coisa de 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 é a mesma coisa que uma rotação para a esquerda em
e vice-versa. Logo não precisamos fazer rotações em
.
Agora o problema foi reduzido a achar o número de máximo de pares que combinam olhando apenas rotações em . Como
rotações em
resulta em
novamente, temos apenas
rotações para a direita possíveis.
Como ambos os vetores são permutações, cada elemento só vai combinar com o seu correspondente em
em apenas uma rotação possível. Por exemplo, se
é
e
é
, o número
em
vai combinar com o número
em
em apenas uma rotação para a direita possível. Então para cada elemento em
temos que achar o número de rotações para ele encontrar seu correspondente em
e olhar quantos outros pares também combinam. O maior entre eles é a resposta, segue o código.