• محدودیت زمان:‌ ۱ ثانیه
  • محدودیت حافظه: ۲۵۶ مگابایت
  • منبع: آزمون مقدماتی اول دوره ۲۷ المپیاد کامپیوتر

اشکان برای سرگرم کردن پرهام یک بازی طراحی کرده‌است. او به پرهام یک جایگشت از اعداد صفر تا n1n-1 می‌دهد و از او می‌خواهد که با کمترین تعداد حرکت این جایگشت را مرتب کند.

پرهام در هر نوبت می‌تواند جایگشت را به دو زیردنباله S1S_1 و S2S_2 افراز کند و جایگشت جدید را از کنار هم گذاشتن S1S_1 و S2S_2 به دست آورد. برای مثال او می‌تواند در یک نوبت جایگشت <1,3,2,0,4,5><1, 3, 2, 0, 4, 5> را به دو زیردنباله <3,0,4,5><3, 0, 4, 5> و <1,2><1, 2> افراز کند و سپس به جایگشت <3,0,4,5,1,2><3, 0, 4, 5, 1, 2> تبدیل کند. توجه کنید که اعضای زیردنباله به همان ترتیبی که در جایگشت هستند باید قرار گیرند، مثلا <3,4,0><3, 4, 0> زیردنباله معتبری از جایگشت داده شده نیست.

به پرهام کمک کنید که با کمترین تعداد حرکت جایگشت داده شده را مرتب کند. 1n100 0001 \le n \le 100\ 000 0pin10 \le p_i \le n-1

ورودی

در خط اول ورودی عدد n n آمده است. در خط بعد nn عدد p0,p1,...,pn1 p_0, p_1, ... , p_{n-1} آمده که اعداد جایگشت هستند.

خروجی

در خط اول خروجی kk، کمترین تعداد حرکت‌ مورد نیاز را چاپ کنید.

در هر یک k+1 k + 1 خط بعدی n n عدد چاپ کنید که خط اول خود جایگشت ورودی و پس از آن در هر خط جایگشتی که از روی جایگشت قبلی‌اش به دست می‌آید را چاپ کنید.

اگر بیش از یک روش برای مرتب کردن جایگشت با کمترین تعداد حرکت وجود داشته‌باشد می‌توانید هر کدام را به دلخواه چاپ کنید.

زیرمسئله‌ها

زیرمسئله نمره محدودیت
۱ ۱۱ n7n \le 7
۲ ۲۳ جایگشت نزولی است (pi>pi+1p_i > p_{i+1}) و nn توانی از دو است یعنی n=2kn=2^k
۳ ۴۶ n100n \le 100
۴ ۲۰ بدون محدودیت اضافی

مثال

ورودی نمونه ۱

3
0 1 2
Plain text

خروجی نمونه ۱

0
0 1 2
Plain text

ورودی نمونه ۲

5
0 3 1 2 4
Plain text

خروجی نمونه ۲

1
0 3 1 2 4 
0 1 2 3 4
Plain text

ورودی نمونه ۳

6
1 3 2 0 4 5
Plain text

خروجی نمونه ۳

2
1 3 2 0 4 5
3 0 4 5 1 2
0 1 2 3 4 5
Plain text

ارسال پاسخ برای این سؤال
فایلی انتخاب نشده است.