مسابقه

محمد مهدی و LIS


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

روزبه دنباله‌ای مثل a1,a2,a3,...,ana_1, a_2, a_3, ..., a_n انتخاب کرد و به ازای هر ii طول بلندترین زیردنباله‌ی صعودی که به عضو ii ام ختم می‌شود را محاسبه کرد و دنباله‌ی d1,d2,d3,...,dnd_1, d_2, d_3, ..., d_n را ساخت که did_i بلندترین زیردنباله‌ی صعودی مختوم به ii است.

روزبه دنباله‌ی d1,d2,...,dnd_1, d_2, ..., d_n را به محمدمهدی می‌دهد و از او میپرسد به ازای تمام دنباله‌های ممکن که دنباله‌ی ساخته شده از آن دنباله‌ی d1,d2,...,dnd_1, d_2, ..., d_n شود، کمترین طول برای بزرگترین زیردنباله‌ی نزولی آن‌ها چقدر است؟

به محمد مهدی کمک کنید تا پاسخ این پرسش را بدهد.

ورودی🔗

خط اول ورودی عدد nn که طول دنباله‌است آمده‌است. (1n5×105)(1 \leq n \leq 5\times10^5)

در خط دوم nn عدد که با فاصله از هم جدا شده‌اند آمده‌است که عدد iiام مقدار did_i است.

خروجی🔗

در خط اول خروجی یک عدد که کمینه طول برای بزرگترین زیردنباله‌ی نزولی برای همه‌ی دنباله‌های ممکن برای انتخاب روزبه است.

خط دوم، دنباله‌ای مثال بزنید که طول بلندترین زیردنباله‌ی نزولی آن عدد کمینه باشد.

اعضای دنباله‌ی خروجی باید عدد طبیعی بوده و از یک‌میلیون بیشتر نباشند.

مثال🔗

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

5
1 2 3 4 5
Plain text

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

1
1 2 3 4 5 
Plain text

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

13
1 2 2 3 3 3 3 3 4 5 5 6 7
Plain text

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

5
19 74 66 1001 1000 444 323 98 5000 6000 5555 8500 9500
Plain text

توضیحات🔗

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

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

دنباله‌ای مثل a1,a2,...,ana_1, a_2, ..., a_n صعودی‌است اگر و تنها اگر به ازای هر ii که 1i<n1 \leq i < n، aiai+1a_i \leq a_{i+1}.

دنباله‌ای مثل a1,a2,...,ana_1, a_2, ..., a_n نزولی‌است اگر و تنها اگر به ازای هر ii که 1i<n1 \leq i < n، aiai+1a_i \geq a_{i+1}.

ارسال پاسخ برای این سؤال
در حال حاضر شما دسترسی ندارید.