تحليل التباديل مع الأخذ في الاعتبار الانعكاسات والفواصل

Python Hard 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