#ABC278D. [ABC278D] All Assign Point Add

[ABC278D] All Assign Point Add

题目描述

長さ NN の数列 A=(A1,A2,,AN)A=(A_1,A_2,\dots ,A_N ) が与えられます。

QQ 個のクエリが与えられるので、順番にすべて処理してください。 qq 番目 (1qQ(1\le q\le Q) のクエリは以下の 33 つのいずれかの形式で、それぞれ次のようなクエリを表します。

  • 1 xq1\text{ } x_qAA のすべての要素に xqx_q を代入する。
  • 2 iq xq2\text{ }i_q \text{ }x_qAiqA_{i_q}xqx_q を加える。
  • 3 iq3\text{ }i_q AiqA_{i_q} の値を出力する。

输入格式

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

N N A1 A_1 A2 A_2 \dots AN A_N Q Q query1 \operatorname{query}_1 query2 \operatorname{query}_2 \vdots queryQ \operatorname{query}_Q

ただし、queryq \operatorname{query}_q q q 番目のクエリであり、1 x, 2 i x, 3 i の形式のいずれかで与えられる。

输出格式

queryq \operatorname{query}_q 3 3 番目の形式であるような q (1 q Q) q\ (1\leq\ q\leq\ Q) の個数を X X として、X X 行出力せよ。 j (1 j X) j\ (1\leq\ j\leq\ X) 行目にはそのようなクエリのうち j j 番目のクエリに対する答えを出力せよ。

题目大意

【题目翻译】

给定长度为 nn 的数组 aa,每次有三种操作:

  • opi=1op_i = 1,表示将 aa 数组全部元素替换成 kk
  • opi=2op_i = 2,表示 aiai+ka_i \gets a_i + k
  • opi=3op_i = 3,表示查询 aia_i 的值。

对于每个 opi=3op_i = 3,输出结果。

translated by

https://www.luogu.com.cn/user/367488

【输入格式】

第一行一个数 nn

接下来 nn 个数,表示 aa 数组。

第三行一个数 qqqq 表示操作次数。

接下来 qq 行,每行表示一次操作:

  • opi=1op_i = 1,则再读入一个数 kk
  • opi=2op_i = 2,则再读入两个数 iikk
  • opi=3op_i = 3,则再读入一个数 ii

【输出格式】

对于每个 opi=3op_i = 3,输出结果。

【数据范围】

1n,q2×1051 \le n, q \le 2 \times 10^5

保证 1in1 \le i \le n1ai,k1091 \le a_i, k \le 10^9

5
3 1 4 1 5
6
3 2
2 3 4
3 3
1 1
2 3 4
3 3
1
8
5
1
1000000000
8
2 1 1000000000
2 1 1000000000
2 1 1000000000
2 1 1000000000
2 1 1000000000
2 1 1000000000
2 1 1000000000
3 1
8000000000
10
1 8 4 15 7 5 7 5 8 0
20
2 7 0
3 7
3 8
1 7
3 3
2 4 4
2 4 9
2 10 5
1 10
2 4 2
1 10
2 3 1
2 8 11
2 3 14
2 1 9
3 8
3 8
3 1
2 6 5
3 7
7
5
7
21
21
19
10

提示

制約

  • 1  N  2×105 1\ \leq\ N\ \leq\ 2\times10^5
  • 1  Q  2×105 1\ \leq\ Q\ \leq\ 2\times10^5
  • 0  A  i  109 (1 i N) 0\ \leq\ A\ _\ i\ \leq\ 10^9\ (1\leq\ i\leq\ N)
  • q q 番目 (1 q Q) (1\leq\ q\leq\ Q) のクエリが 2 2 番目もしくは 3 3 番目の形式のとき、1  i  q  N 1\ \leq\ i\ _\ q\ \leq\ N
  • q q 番目 (1 q Q) (1\leq\ q\leq\ Q) のクエリが 1 1 番目もしくは 2 2 番目の形式のとき、0  x  q  109 0\ \leq\ x\ _\ q\ \leq\ 10^9
  • 3 3 番目の形式のクエリが存在する
  • 入力される値はすべて整数

Sample Explanation 1

はじめ、A=(3,1,4,1,5) A=(3,1,4,1,5) です。 それぞれのクエリでは、以下のような処理が行われます。 - A2=1 A_2=1 なので、1 1 を出力します。 - A3 A_3 4 4 を加えます。A=(3,1,8,1,5) A=(3,1,8,1,5) となります。 - A3=8 A_3=8 なので、8 8 を出力します。 - A A の要素すべてに 1 1 を代入します。A=(1,1,1,1,1) A=(1,1,1,1,1) となります。 - A3 A_3 4 4 を加えます。A=(1,1,5,1,1) A=(1,1,5,1,1) となります。 - A3=5 A_3=5 なので、5 5 を出力します。

Sample Explanation 2

A A の要素の値が 32bit 32\operatorname{bit} 整数に収まらない可能性があることに注意してください。