- محدودیت زمان: ۲ ثانیه
- محدودیت حافظه: ۲۵۶ مگابایت
داده ساختار صف اولویت میانه شامل \(n\) عنصر مجزاست که اعمال زیر را میتوان روی آن انجام داد:
- درج یک عنصر و حذف میانه، در بدترین حالت در \(O(log \,n)\)
- ساخت یک صف اولویت میانه
MPQاز \(n\) عنصر در زمان \(O(log \,n)\)
ورودی
در خط اول عدد \(k\) که نشاندهنده تعداد دستورهایی است که شما باید اجرا کنید میآید. در \(k\) سطر بعد، \(k\) دستور داده میشود که دستور \(build\) لزوما در خط اول داده خواهد شد. دستورات ممکن به شرح زیر هستند:
- دستور \(build(x_1,x_2,\cdots,x_m)\) : یک
MPQاز اعداد \(x_1\) تا \(x_m\) در زمان \(O(n)\) میسازد. (برای بدست آوردن میانه این اعداد میتوانید \(O(n \,log\, n)\) زمان هزینه کنید و این جزء مراحل ساختMPQبه حساب نمیآید.) - دستور \(insert(x)\) : عدد \(x\) را در \(O(log \,n)\) در
MPQدرج میکند. - دستور \(remove\) : میانه را در \(O(log \,n)\) از
MPQحذف میکند.(اگر تعداد عناصر زوج باشد، عنصر \(\frac{n}{2}\)امین در لیست مرتب عناصر را میانه درنظر بگیرید)
\[1 \leq t \leq 10^5\] \[10^{-9} \leq x_i \leq 10^9\]
خروجی
شما باید به تعداد دستورهای \(remove\) در ورودی، عدد حاصل از فراخوانی این تابع را در خروجی چاپ کنید. فرض کنید تعداد خروجیهایی که یک برنامه چاپ میکند بیشتر از \(5 \times 10^6\) نخواهد بود.
مثال
ورودی نمونه
6
build(1,2,3,4,5)
remove
remove
insert(7)
insert(9)
remove
خروجی نمونه
3
2
5
ارسال پاسخ برای این سؤال