atcoder#ABC256H. [ABC256Ex] I like Query Problem

[ABC256Ex] I like Query Problem

配点 : 600600

問題文

N,QN, Q および A=(a1,a2,,aN)A = (a_1, a_2, \dots, a_N) が与えられます。 以下で説明されるクエリを QQ 個処理してください。クエリは次の 33 種類のいずれかです。

  • 1 L R x : i=L,L+1,,Ri=L,L+1,\dots,R について aia_i の値を $\displaystyle \left\lfloor \frac{a_i}{x} \right\rfloor$ に更新する。
  • 2 L R y : i=L,L+1,,Ri=L,L+1,\dots,R について aia_i の値を yy に更新する。
  • 3 L R : i=LRai\displaystyle\sum_{i=L}^R a_i を出力する。

制約

  • 1N5×1051 \leq N \leq 5 \times 10^5
  • 1Q1051 \leq Q \leq 10^5
  • 1LRN1 \leq L \leq R \leq N
  • 1ai1051 \leq a_i \leq 10^5
  • 2x1052 \leq x \leq 10^5
  • 1y1051 \leq y \leq 10^5
  • 入力される値はすべて整数

入力

入力は以下の形式で標準入力から与えられる。ここでqueryi\text{query}_iii 番目に処理するクエリである。

NN QQ

a1a_1 a2a_2 \dots aNa_N

query1\text{query}_1

query2\text{query}_2

\vdots

queryQ\text{query}_Q

各クエリは以下の 33 種類のいずれかの形式で与えられる。

11 LL RR xx

22 LL RR yy

33 LL RR

出力

問題文の指示に従ってクエリへの答えを改行区切りで出力せよ。

3 5
2 5 6
3 1 3
1 2 3 2
3 1 2
2 1 2 3
3 1 3
13
4
9

はじめ、A=(2,5,6)A = (2, 5, 6) です。よって 11 番目のクエリの答えは a1+a2+a3=2+5+6=13a_1 + a_2 + a_3 = 2 + 5 + 6 = 13 になります。 22 番目のクエリを処理した直後は A=(2,2,3)A = (2, 2, 3) です。よって 33 番目のクエリの答えは a1+a2=2+2=4a_1 + a_2 = 2 + 2 = 4 になります。 44 番目のクエリを処理した直後は A=(3,3,3)A = (3, 3, 3) です。よって 55 番目のクエリの答えは a1+a2+a3=3+3+3=9a_1 + a_2 + a_3 = 3 + 3 + 3 = 9 になります。

6 11
10 3 5 20 6 7
3 1 6
1 2 4 3
3 1 3
2 1 4 10
3 3 6
1 3 6 2
2 1 4 5
3 1 6
2 1 3 100
1 2 5 6
3 1 4
51
12
33
26
132