动态区间删减,并且需要查询区间最大值,该特性可以使用线段树实现。
维护线段树区间最大值的下标,每次查询将最大下标对应的值删去并输出,直到没有最大值为止。
在一座自动化仓库中,有一排共 m 个储物格,编号为 1 到 m。每个储物格放置了一件货物,货物分为两种类型:类型 0 和类型 1。每件货物有一个质量等级(用一个正整数表示),质量等级越高的货物优先级越高;若质量相同,则位于编号较小的储物格的货物优先级更高。
现在依次来了 n 个订单。每个订单提出以下要求:选取区间 [l,r] 内的储物格,类型为 t(t 为 0 或 1),需要 k 件货物。处理订单时,每次从当前区间中所有尚未被取走的、类型为 t 的货物中,挑选优先级最高的一件取走,并记录其所在储物格的编号。重复这一过程,直到取满 k 件货物,或者区间内已没有符合条件的货物为止。
你的任务是依次处理所有订单,并输出每个订单取走的储物格编号序列。如果在某次取货时无法找到符合条件的货物,则输出一个 −1 并结束该订单的输出(不再继续尝试取剩余的数量)。
约束:订单数 n 和储物格数 m 满足 1≤n,m≤105;质量等级是不超过 109 的正整数;货物类型为 0 或 1;对于每个订单,1≤l≤r≤m,t∈{0,1},1≤k≤m。
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.