Solução escrita por Malu Azevedo
Conhecimentos necessários:
O problema nos pede para determinar se é possível transformar a sequência inicial na sequência alvo realizando trocas entre elementos cuja distância na linha seja exatamente .
Ideia Central
Como a operação permitida troca apenas elementos que estão a uma distância exata , percebemos que podemos trocar elementos cujos índices deixam o mesmo resto quando divididos por . Isso significa que o array é dividido em grupos independentes, conhecidos como as classes de resto módulo . Dentro de cada um desses grupos, os elementos podem ser reordenados livremente de qualquer maneira. Portanto, para que a transformação seja viável, cada grupo de elementos com o mesmo resto módulo na sequência deve conter exatamente os mesmos valores que o grupo correspondente na sequência .
Abordagem Completa
Lemos os valores de e , seguidos pelas sequências e . Para verificar a condição, criamos estruturas para armazenar os elementos de cada resto módulo . Para cada índice de 0 a N-1, pegamos o elemento de e o de , e os agrupamos pelo seu resto correspondente módulo . Em seguida, ordenamos os elementos de cada grupo tanto para quanto para . Se todos os grupos forem idênticos nas duas sequências, significa que conseguimos organizar as caixas e imprimimos ‘S’, caso contrário, imprimimos ‘N’. A complexidade da solução é
