فهرست مندرجات

Muzip

تا حالا کاغذ نت‌های یک موسیقی را دیده‌اید؟ متون موسیقی از چپ به راست خوانده می‌شوند و می‌توان آن‌ها را دنباله‌ای از نت‌ها در نظر گرفت.

یکی از ایده‌های معروف برای کوتاه ساختن این متون، استفاده از ارجاع است. می‌دانیم یک موسیقی معمولا دارای قطعات تکراری است. پس اگر به جای نوشتن مجدد تکرارهای یک تکه، به جایی که آن تکه قبلا نوشته شده اشاره کنیم توانسته‌ایم این متن را تاحدی فشرده کنیم. مثلا در شکل بالا، قسمتی که در آن ‎$<A-B>$‎ نوشته شده، به قسمتی از نت‌ها اشاره می‌کند که شروع و پایانش با حروف ‎$A$‎ و ‎$B$‎ نشان داده شده است.

‎ نت‌های موسیقی در این مسئله با اعداد صحیح مدل شده‌اند. در عین حال، نت‌ها از چپ به راست به ترتیب با ۱، ۲ و ‎$\ldots$‎ شماره‌گذاری شده‌اند. برای ارجاع به جاهای دیگر موسیقی از همین شماره‌گذاری استفاده می‌شود. در این مسئله، قرار است یک متن موسیقی را از حالت فشرده درآورید. شکل ارجاعات در موسیقی های فشرده‌ی این مسئله، کمی تعمیم یافته‌تر از نسخه‌های واقعی آن است:

برنامه‌ای بنویسید که:

ورودی

خروجی

محدودیت‌ها

ورودی و خروجی نمونه

ورودی نمونه خروجی نمونه
12‎
1 1 4 8 10 1 2 7 5 3 11 32
4‎
1 2 3 6‎
8‎
4 5 7 8 9 10 11 12