Analyse des permutations en tenant compte des inversions et des ruptures
Python
Hard
lists
Tâche «Analyse des permutations en tenant compte des inversions et des ruptures»
Soit une permutation des nombres de 1 à n. Il faut déterminer si elle est « presque identique » : le nombre d’inversions (paires i<j où a[i] > a[j]) doit être égal au maximum possible pour les permutations avec un nombre fixe de ruptures. On appelle rupture une position k où a[k] != k. Si la permutation satisfait la condition, affichez le nombre de ruptures, sinon affichez -1. De plus, si le nombre de ruptures est égal à 0, affichez 0. Si la permutation est impossible (par exemple, données incorrectes), affichez -2.
Format d\ entrée
Sur la première ligne, un entier n (1 ≤ n ≤ 10^5). Sur la deuxième ligne, n entiers — la permutation.
Format de sortie
Un entier : le nombre de ruptures, -1 ou -2.
Exemples
Exemple 1
ENTRÉE
abacaba
abacaba
SORTIE
7
Exemple 2
ENTRÉE
3
3 2 1
SORTIE
-1
main.py