問題一覧 > 通常問題

No.876 Range Compress Query

レベル : / 実行時間制限 : 1ケース 2.000秒 / メモリ制限 : 512 MB / 標準ジャッジ問題
タグ : / 解いたユーザー数 211
作問者 : beet / テスター : tubuann
7 ProblemId : 3283 / 出題時の順位表 / 自分の提出
問題文最終更新日: 2019-09-07 00:06:11

問題文

要素数 N の数列 A={a1,a2,...,aN}  が与えられます。

以下の 2 種類のクエリが合計 Q 個与えられるので、それらを順番に処理してください。

  • 1 l r x
    • i[l,r] について、aiai+x で置き換える

  • 2 l r
    • 以下のように定義される F(l,r) (lr) の値を出力する
    • F(l,r)={1(l=r)G(al,al+1)+F(l+1,r)(l<r)
    • G(x,y)={0(x=y)1(xy)

入力

N Q
a1 a2  aN
query1
query2

queryQ

1 行目に数列の長さを表す整数 N とクエリの数を表す整数 Q がこの順で半角スペース区切りで与えられます。

2 行目には N 個の整数が半角スペース区切りで与えられ、その内の i 番目 (1iN) の整数は、初期の ai の値を表します。

続く Q 行のうちの i 行目 (1iQ) には、i 番目のクエリが与えられます。

各クエリは

  • 1 l r x
  • 2 l r

のいずれかの形式で与えられます。


入力は全部で Q+2 行となり、以下の制約を満たします。

  • 入力は全て整数
  • 1N,Q105
  • 1ai109  (1iN)
  • クエリ1
    • 1lrN
    • 1x109
  • クエリ2
    • 1lrN
  • クエリ2 は 1 つ以上存在する

出力

各クエリ2に対して、F(l,r) の値を改行区切りで出力してください。

サンプル

サンプル1
入力
4 4
1 3 3 3
2 1 4
1 2 3 4
2 1 4
2 2 3
出力
2
3
1

提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。