صف دو طرفه


  • محدودیت زمان: ۱ ثانیه
  • محدودیت حافظه: ۲۵۶ مگابایت

یک صف دو طرفه شامل NN عضو داریم. شما باید چند عضو خاص از این صف را بیرون بیاورید.

می‌توانید سه عمل زیر را بر روی صف انجام دهید:

  1. عضو اول را بیرون بیاورید. پس از این عمل صف a1,,aKa_1, \dots, a_K تبدیل به a2,,aKa_2, \dots, a_K می‌شود.
  2. صف را به سمت چپ بچرخانید. پس از این عمل صف a1,,aKa_1, \dots, a_K تبدیل به a2,,aK,a1a_2, \dots, a_K, a_1 می‌شود.
  3. صف را به سمت راست بچرخانید. پس از این عمل صف a1,,aKa_1, \dots, a_K تبدیل به aK,a1,,aK1a_K, a_1, \dots, a_{K-1} می‌شود.

به شما اندازه‌ی صف و اندیس عضو‌های مورد نظر داده شده است. بگویید حداقل چند عمل چرخش برای بیرون آوردن عضو‌های مورد نظر به ترتیب داده شده نیاز است؟

ورودی🔗

در سطر اول ورودی دو عدد طبیعی NN و MM، به ترتیب نشان دهنده‌ی تعداد اعضای صف و تعداد اعضای مورد نظر، با فاصله از هم آمده است. در سطر دوم ورودی اعداد p1,,pMp_1, \dots, p_M ، نشان دهنده‌ی اندیس عضو‌های مورد نظر، با فاصله از هم آمده است. اعضای این دنباله دو به دو متفاوتند.

1MN501 \le M \le N \le 50 1piN1 \le p_i \le N

خروجی🔗

در تنها سطر خروجی تعداد اعمال چرخش لازم برای بیرون آوردن اعضای مورد نظر به ترتیب داده شده را چاپ کنید.

مثال🔗

ورودی نمونه ۱🔗

10 3
1 2 3
Plain text

خروجی نمونه ۱🔗

0
Plain text

عضو‌ها به همان ترتیبی که در صف ظاهر شده‌اند بیرون می‌آیند و چرخشی لازم نیست.

ورودی نمونه ۲🔗

10 3
2 9 5
Plain text

خروجی نمونه ۲🔗

8
Plain text

برای بیرون آوردن اولین عضو یک چرخش به چپ نیاز است. سپس برای بیرون آوردن المان دوم سه چرخش به راست نیاز است. المان سوم را نیز می‌توان با چهار چرخش به راست یا چپ بیرون آورد.

ورودی نمونه ۳🔗

32 6
27 16 30 11 6 23
Plain text

خروجی نمونه ۳🔗

59
Plain text

ورودی نمونه ۴🔗

10 10
1 6 3 2 7 9 8 4 10 5
Plain text

خروجی نمونه ۴🔗

14
Plain text