Editorial for B. Танилууд (Сурагч VI-X)


Remember to use this editorial only when stuck, and not to copy-paste code from it. Please be respectful to the problem author and editorialist.
Submitting an official solution before solving the problem yourself is a bannable offence.

Author: admin

ПАТРИК N-ийн өндөр хязгаар нь квадрат шийдлүүдийг хэт удаан болгоно.

Эхлээд бүх хүмүүсийн өндрийг ялгаатай гэж үзье. Дарааллыг дэс дарааллын дагуу шалгаж байна гэж төсөөл. Дараалалд хүлээж буй А хүнийг ажиглая. Хэрэв А хүний дараа бид түүнээс өндөр В хүнд таарвал, А хүн В хүний дараах хэнийг ч харах боломжгүй.

Иймээс дарааллыг шалгах явцад бид "нээлттэй дэд асуудлууд"-ыг хадгалсан стек үүсгэж болно. Нээлттэй дэд асуудал гэдэг нь дараалалд таарсан боловч хараахан дуусаагүй, цаашид хэн нэгнийг харах боломжтой хүн юм. Стек дээрх дэд асуудлууд өндрөөрөө буурах дарааллаар (стек дээрх хамгийн дээд дэд асуудал = хамгийн намхан хүн) эрэмбэлэгдсэн байх нь тодорхой.

Шинэ хүнтэй таарах үед тухайн хүн стекин дээрх өөрөөсөө намхан бүх хүмүүсийг харж, тэдгээрийг стекинээс гаргаж авна (дэд асуудлыг хааж байна). Хэрэв үүний дараа стек хоосон биш байвал, тухайн хүн стекин дээр үлдсэн эхний хүнийг бас харж чадна. Дараа нь тухайн хүн стекийнд орно (учир нь дарааллын цаашид хэн нэгнийг харах боломжтой).

Энэхүү шийдэл нь хоёр давхар давталттай ч, нийт хугацааны нарийн төвөгтэй байдал ? ( ? ) O(N) байна. Учир нь хүн бүр стекид нэг удаа орж, нэг удаа гардаг бөгөөд дотоод давталтын бүх эргэлт нэг элементийг стекидээс гаргадаг.

Шийдлийг бүрэн гүйцээхийн тулд ижил өндөртэй хүмүүсийн нөлөөг харгалзах шаардлагатай. Нэг арга нь стекид (өндөр, хүмүүсийн тоо) гэсэн хос утгуудыг хадгалж, зохих ёсоор удирдах явдал юм.


Comments

There are no comments at the moment.