题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1503
分析:
经典的平衡树题,我用Treap做的
下面有几点注意的:
1、可能出现新加入的人的薪水就已经比min低了,这种人不能算入最后的走的人当中,要特判
2、对于整体薪水加加减减不能在每个点上处理,在外面记录一个s表示当前加加减减的总和,那么删除的就是平衡树里面权值小于min-s的所有点了,具体删除的时候就是不断往下面找并删除掉当前根节点和左子树。但注意到后面加入的数是不受前面的加加减减的影响的,所以插入进去是不对的,那么假设读入的是x,那么插入的就是x-s,为什么呢?因为每个点的实际权值是 平衡树的权值+S,所以这样可以保证它的实际权值为x。所以对于查K大的时候,最后的权值也要+S