Análise de permutações considerando inversões e quebras
Python
Hard
lists
Tarefa «Análise de permutações considerando inversões e quebras»
Dada uma permutação de números de 1 a n. É necessário determinar se ela é "quase idêntica": o número de inversões (pares i<j onde a[i] > a[j]) deve ser igual ao máximo possível para permutações com um número fixo de quebras. Quebra é uma posição k onde a[k] != k. Se a permutação satisfaz a condição, imprima o número de quebras, caso contrário imprima -1. Adicionalmente, se o número de quebras for igual a 0, imprima 0. Se a permutação for impossível (por exemplo, dados incorretos), imprima -2.
Formato de Entrada
Na primeira linha, um inteiro n (1 ≤ n ≤ 10^5). Na segunda linha, n inteiros — a permutação.
Formato de Saída
Um único inteiro: o número de quebras, -1 ou -2.
Exemplos
Exemplo 1
ENTRADA
abacaba
abacaba
SAÍDA
7
Exemplo 2
ENTRADA
3
3 2 1
SAÍDA
-1
main.py