H - 区間加算・区間最小値 Editorial /

Time Limit: 2 sec / Memory Limit: 1024 MiB

配点: 100

問題文

長さ N の数列 A = (a_0, a_1, \ldots, a_{N-1}) があります。Q 個のクエリが与えられるので、これらを順に処理してください。

  • クエリ 1: l, r, x が与えられるので、a_l, a_{l+1}, \ldots, a_{r-1}x を足す
  • クエリ 2: l, r が与えられるので、\min( a_l, a_{l+1}, \ldots, a_{r-1} ) を求める

入力

入力は以下の形式で標準入力から与えられます。

N
a_0 a_1 \ldots a_{N-1}
Q
\mathrm{Query}_0
\vdots
\mathrm{Query}_{Q-1} 

\mathrm{Query}_i は以下の形式で与えられます。

  • クエリ 1 の場合
1 l r x
  • クエリ 2 の場合
2 l r

出力

クエリ 2 それぞれについて、答えを 1 行に 1 つずつ、順に出力してください。

制約

  • 1 \leq N \leq 100{,}000
  • 1 \leq a_i \leq 10^{9}
  • 1 \leq Q \leq 100{,}000
  • 0 \leq l_i < r_i \leq N
  • 1 \leq x_i \leq 10^{9}


入力例

6
5 1 8 2 1 5
3
2 0 4
1 1 4 5
2 0 3

出力例

1
5

  • 1 個目のクエリでは、\min(a_0, a_1, a_2, a_3) = \min(5, 1, 8, 2) = 1 を出力します。
  • 2 個目のクエリでは、a_1, a_2, a_3 それぞれに 5 を足します。これにより、数列は A = (5, 6, 13, 7, 1, 5) に変化します。
  • 3 個目のクエリでは、\min(a_0, a_1, a_2) = \min(5, 6, 13) = 5 を出力します。