#P1030. B.谍战情报(information.cpp)

B.谍战情报(information.cpp)

题目背景

当然,您想想,耳机里除了沙沙声什么也没有,屏幕上一片空白,对作战命令和周围的战场态势一无所知,可不就是这种感觉嘛!这黑暗,压得人喘不过气来啊。 ——《全频段阻塞干扰》

你深知战场上情报优势不在自己的黑暗,于是早已提前制作了一个工具从机房的网络交换机上获取网络 情报,它可以实时获取机房里每个人进行机惨的几率,精确到 0.1%0.1\%。你已经使用了空间压缩技术把机房 战场转化成了一条序列,序列上的元素表示这个人进行机惨的几率,现在你想知道某一片战场的平静程 度,即这个序列中区间 [l,r][l, r] 里有多少个人的机惨几率小于某个数。同时因为是实时战场数据,每个人 机惨的几率是会变化的,即会若干次修改一个人的几率。

题目描述

简化题意:给定一个序列,每次求区间小于某数的数的个数,或把一个数改成另一个数。

输入格式

第一行两个数 n,mn, m,表示机房地形转化成序列后的长度和操作个数。

第二行 nn 个整数 pip_i,表示位置为 ii 的人机惨的概率为 pi/1000p_i/1000

接下来 mm 行每行第一个为整数 opop,

opop11 则后面有两个整数,表示把 xx 位置上的概率改成 y/1000y/1000

22 则后面有三个整数 l,r,yl,r,y 表示查询区间 [l,r][l,r] 里概率小于 y/1000y/1000 的有几个位置。

输出格式

对每个 opop22 的询问输出一行一个整数表示答案。

样例 #1

样例输入 #1

10 10
4 8 4 7 8 8 7 2 1 8 1 1 4
1 10 3
1 7 8
2 6 7 4
2 5 9 3
1 2 1
2 1 9 4
1 5 4
2 2 5 7
2 6 7 3

样例输出 #1

0 
2 
3 
3 
0

提示

10%10\% 的数据保证 n1000n\le 1000m1000m\le 1000

对另外 20%20\% 的数据保证 op=2op=2

100%100\% 的数据保证 n105n\le 10^5 m104m\le 10^4pi,y1000pi,y\le 1000x,l,r[1,n]x,l,r\in [1,n].