AT_abc265_g [ABC265G] 012 Inversion

Description

[problemUrl]: https://atcoder.jp/contests/abc265/tasks/abc265_g 各要素が $ 0,1,2 $ のいずれかである長さ $ N $ の数列 $ A=(A_1,\ldots,A_N) $ が与えられます。 $ Q $ 個のクエリを順に処理してください。各クエリは以下の $ 2 $ 種類のいずれかです。 - `1 L R`:数列 $ (A_L,\ldots,A_R) $ の転倒数を出力する - `2 L R S T U`: $ L\leq\ i\ \leq\ R $ を満たす各 $ i $ について、$ A_i $ が $ 0 $ なら $ S $ に、$ 1 $ なら $ T $ に、$ 2 $ なら $ U $ に置き換える 転倒数とは? 数列 $ B\ =\ (B_1,\ \ldots,\ B_M) $ の転倒数とは、整数の組 $ (i,\ j) $ $ (1\ \leq\ i\ であって\ B_i\ >\ B_j $ を満たすものの個数です。

Input Format

入力は以下の形式で標準入力から与えられる。 > $ N $ $ Q $ $ A_1 $ $ A_2 $ $ \ldots $ $ A_N $ $ \rm\ Query_1 $ $ \rm\ Query_2 $ $ \vdots $ $ \rm\ Query_Q $ ここで $ i $ 番目のクエリを表す $ \rm\ Query_i $ は以下のいずれかの形式で与えられる。 > $ 1 $ $ L $ $ R $ > $ 2 $ $ L $ $ R $ $ S $ $ T $ $ U $

Output Format

$ 1 $ 種類目のクエリに対する答えを順に改行区切りで出力せよ。

Explanation/Hint

### 制約 - $ 1\ \leq\ N\ \leq\ 10^5 $ - $ 0\ \leq\ A_i\ \leq\ 2 $ - $ 1\leq\ Q\leq\ 10^5 $ - 各クエリにおいて、$ 1\leq\ L\ \leq\ R\ \leq\ N $ - $ 2 $ 種類目のクエリにおいて、$ 0\leq\ S,T,U\ \leq\ 2 $ - 入力に含まれる値は全て整数である ### Sample Explanation 1 最初 $ A=(2,0,2,1,0) $ です。 - $ 1 $ 番目のクエリにおいて、$ (A_2,A_3,A_4,A_5)=(0,2,1,0) $ の転倒数 $ 3 $ を出力します。 - $ 2 $ 番目のクエリを処理すると、$ A=(2,2,0,1,0) $ となります。 - $ 3 $ 番目のクエリにおいて、$ (A_2,A_3,A_4,A_5)=(2,0,1,0) $ の転倒数 $ 4 $ を出力します。