تحليل التباديل مع الأخذ في الاعتبار الانعكاسات والفواصل
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