Анализ перестановок с учётом инверсий и разрывов
Python
Сложный
lists
Задача «Анализ перестановок с учётом инверсий и разрывов»
Дана перестановка чисел от 1 до n. Требуется определить, является ли она «почти тождественной»: количество инверсий (пар i<j, где a[i] > a[j]) должно быть равно максимально возможному для перестановок с фиксированным числом разрывов. Разрывом называется позиция k, где a[k] != k. Если перестановка удовлетворяет условию, выведите количество разрывов, иначе выведите -1. Дополнительно, если количество разрывов равно 0, выведите 0. Если перестановка невозможна (например, данные некорректны), выведите -2.
Формат ввода
В первой строке целое число n (1 ≤ n ≤ 10^5). Во второй строке n целых чисел — перестановка.
Формат вывода
Одно целое число: количество разрывов, -1 или -2.
Примеры
Пример 1
ВВОД
abacaba
abacaba
ВЫВОД
7
Пример 2
ВВОД
3
3 2 1
ВЫВОД
-1
main.py