Analyse von Permutationen unter Berücksichtigung von Inversionen und Brüchen

Python Hard lists

Aufgabe «Analyse von Permutationen unter Berücksichtigung von Inversionen und Brüchen»

Gegeben ist eine Permutation der Zahlen von 1 bis n. Es soll bestimmt werden, ob sie „nahezu identisch“ ist: Die Anzahl der Inversionen (Paare i<j, wobei a[i] > a[j]) muss dem maximal möglichen Wert für Permutationen mit einer festgelegten Anzahl von Brüchen entsprechen. Ein Bruch ist eine Position k, an der a[k] != k. Wenn die Permutation die Bedingung erfüllt, geben Sie die Anzahl der Brüche aus, andernfalls geben Sie -1 aus. Zusätzlich: Wenn die Anzahl der Brüche gleich 0 ist, geben Sie 0 aus. Wenn die Permutation unmöglich ist (z. B. ungültige Daten), geben Sie -2 aus.

Eingabeformat

In der ersten Zeile eine ganze Zahl n (1 ≤ n ≤ 10^5). In der zweiten Zeile n ganze Zahlen — die Permutation.

Ausgabeformat

Eine ganze Zahl: die Anzahl der Brüche, -1 oder -2.

Beispiele

Beispiel 1

EINGABE
abacaba abacaba
AUSGABE
7

Beispiel 2

EINGABE
3 3 2 1
AUSGABE
-1
main.py