题号:NC229892
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld
题目描述

有

头牛在一个

的地图上玩 generals。一开始,第

头牛的家在第

个格子上,没有两头牛的家在同一个位置(
初始时所有人的兵力为0)。
在接下来的

个回合中,可能会发生以下事件:
1. 牛

获得了一些增援兵力,并且他使用这些增援占据了

这片地区,这片地区不一定和牛

原有地盘相连的(也就是说每个人的地盘可能是多段区间),且最后

每块地区都剩下了

的兵力驻守(保证

大于等于这片地区任一已被自己占据的地盘上的兵力)
这时牛妹想知道牛

获得了多少增援。
对于

,我们设

为

这个格子上的兵力。
那么若

这个格子原本属于牛

,那么令

,否则
那么增援的数量=
注意:如果在一轮占领后,牛
的家被牛
占领了,那么他剩下的所有的地盘和兵力都会归牛
所有 2. 观战的牛妹想要知道牛

有多少兵力。
牛妹还想知道,最后还有那些牛的家还没有被占领。
注意:数据保证,当一头牛的家被占领后,接下来就不会有关于这头牛的操作1和操作2。
输入描述:
第一行三个正整数,
。
第二行
个整数
,表示第
头牛家的位置。
然后
行,每行先输入一个整数
:
1. 若
,再四个整数
,表示一次占领事件。(
)
2. 若

,再输入一个数

。含义如上。
输出描述:
对于每一个询问,输出一行一个数表示答案。
最后输出若干行,每行一个数,从小到大输出家没有被别人占领的牛的编号。
示例1
输入
复制
2 10 3
2 8
1 1 3 6 0
1 2 5 7 1
1 1 4 8 0
说明
我们用Ⅰ表示牛1,用Ⅱ表示牛2。

上图为每一个操作结束以后的兵力分布。
第一次操作,牛Ⅰ扫荡3~6,这些位置是空地,故牛Ⅰ需要增援0。
第二次操作,牛Ⅱ扫荡5~7,这些位置中牛Ⅰ的有2*0兵力,故牛Ⅱ需要增援2*0+3*1=3,同时这三个位置都成为牛Ⅱ的1兵力。
第三次操作,牛Ⅰ扫荡4~8,这些位置中牛Ⅱ的有3*1+1*0兵力,故牛Ⅰ需要增援3+5*0=3,同时这五个位置都成为牛Ⅰ的0兵力,牛Ⅱ被牛Ⅰ吃掉。
最后只有牛Ⅰ活了下来 。