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

题目描述

n 头牛在一个 的地图上玩 generals。一开始,第 i 头牛的家在第 a_i 个格子上,没有两头牛的家在同一个位置(初始时所有人的兵力为0)。

在接下来的 t 个回合中,可能会发生以下事件:

1. 牛 x 获得了一些增援兵力,并且他使用这些增援占据了 这片地区,这片地区不一定和牛 x 原有地盘相连的(也就是说每个人的地盘可能是多段区间),且最后 每块地区都剩下了 p 的兵力驻守(保证 p 大于等于这片地区任一已被自己占据的地盘上的兵力)

这时牛妹想知道牛x获得了多少增援。

对于,我们设t_ii这个格子上的兵力。

那么若i这个格子原本属于牛x,那么令,否则

那么增援的数量=

注意:如果在一轮占领后,牛y的家被牛x占领了,那么他剩下的所有的地盘和兵力都会归牛x所有

2. 观战的牛妹想要知道牛 x 有多少兵力。

牛妹还想知道,最后还有那些牛的家还没有被占领。

注意:数据保证,当一头牛的家被占领后,接下来就不会有关于这头牛的操作1和操作2。

输入描述:

第一行三个正整数,n,m,t

第二行 n 个整数 a_i,表示第i头牛家的位置。

然后 t 行,每行先输入一个整数 op

1. 若 ,再四个整数 x,l,r,p,表示一次占领事件。(

2. 若 ,再输入一个数 x。含义如上。

对于  的数据,

输出描述:

对于每一个询问,输出一行一个数表示答案。

最后输出若干行,每行一个数,从小到大输出家没有被别人占领的牛的编号。


示例1

输入

复制
2 10 3
2 8
1 1 3 6 0
1 2 5 7 1
1 1 4 8 0

输出

复制
0
3
3
1

说明

我们用Ⅰ表示牛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兵力,牛Ⅱ被牛Ⅰ吃掉。

最后只有牛Ⅰ活了下来 。