#5952. 加减乘除

加减乘除

题目背景

小C有一个整数序列,他需要对这个序列进行一系列复杂的操作,最后统计特定范围内的元素个数。这可难倒了他,快来帮帮他吧!

题目描述

小C有一个长度为 nn 的整数序列 a1,a2,,ana_1, a_2, \cdots, a_n,他需要处理 QQ 次操作,操作共分为以下两类:

  1. 操作 1:包含一个非负整数 xx 和两个正整数 sstt。对于所有大于或等于 xx 的元素,需要先将其加上 ss,然后再乘以 tt。即对于一个值为 vv 且满足 vxv \geq x 的元素,在此操作后它变为:

    v=(v+s)×tv' = (v + s) \times t
  2. 操作 2:包含两个非负整数 llrr。小C需要统计序列中所有大于或等于 ll小于或等于 rr 的元素个数。

输入格式

第一行输入两个整数 nnQQ,表示序列的长度和操作的次数。

第二行输入 nn 个整数 a1,a2,,ana_1, a_2, \cdots, a_n,表示初始序列。

接下来 QQ 行,每行描述一个操作。每行的第一个整数表示操作的类型:

  • 如果是 11,则后面跟着三个整数 x,s,tx, s, t
  • 如果是 22,则后面跟着两个整数 l,rl, r

输出格式

对于每个操作 22,输出一行一个整数,表示序列中满足条件的元素个数。

样例

5 3
1 2 3 4 5
1 3 2 3
2 1 10
2 5 15
5
4

数据范围

  • 1n,Q1051 \le n, Q \le 10^5
  • 0ai,x,s,t,l,r1090 \le a_i, x, s, t, l, r \le 10^9