Análisis de permutaciones considerando inversiones y rupturas

Python Hard lists

Tarea «Análisis de permutaciones considerando inversiones y rupturas»

Dada una permutación de números del 1 al n. Se requiere determinar si es "casi identidad": la cantidad de inversiones (pares i<j donde a[i] > a[j]) debe ser igual al máximo posible para permutaciones con un número fijo de rupturas. Se denomina ruptura a una posición k donde a[k] != k. Si la permutación cumple la condición, muestre la cantidad de rupturas; de lo contrario, muestre -1. Adicionalmente, si la cantidad de rupturas es igual a 0, muestre 0. Si la permutación es imposible (por ejemplo, datos incorrectos), muestre -2.

Formato de entrada

En la primera línea, un número entero n (1 ≤ n ≤ 10^5). En la segunda línea, n números enteros — la permutación.

Formato de salida

Un número entero: la cantidad de rupturas, -1 o -2.

Ejemplos

Ejemplo 1

ENTRADA
abacaba abacaba
SALIDA
7

Ejemplo 2

ENTRADA
3 3 2 1
SALIDA
-1
main.py