target 表示下一个希望弹出的编号,初始值为 1。push val:将编号为 val 的物品直接压入栈顶。pop:检查栈顶元素是否等于 target。
target 自增 1。在一个处理槽里初始放着 n 件物品,它们的编号恰好是 1 到 n。现在依次执行 2×n 条操作,操作类型有两种:
push val:将编号为 val 的物品放入槽内,新放入的物品位于槽的顶部;pop:从槽的顶部取出一件物品。你希望在 pop 操作中取出的物品编号恰好依次为 1,2,…,n。为此,每次 push 指令执行后,你可以选择立即对槽内的所有物品进行一次整理:将它们按照编号从大到小重新排布,使得编号最小的物品恰好出现在顶部(后续可以自然拿出)。每次整理需要付出 1 的代价。
已知至少存在一种操作方案可以达到目标,且每次 pop 时槽内一定非空。请你计算最少需要进行多少次整理,才能让 pop 取出的编号序列恰好为 1,2,…,n。
元素个数 n 不超过 105,每次插入的物品编号 val 满足 1≤val≤n。
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.