6817.Range Queries and Copies

Time Limit: 1s Memory Limit: 512MB

Your task is to maintain a list of arrays which initially has a single array. You have to process the following types of queries:

Set the valueain arrayktox.Calculate the sum of values in range[a,b]in arrayk.Create a copy of arraykand add it to the end of the list.

Input Format(From the terminal/stdin)

The first input line has two integers $n$ and $q$ : the array size and the number of queries.

The next line has $n$ integers $t_1,t_2,\ldots,t_n$ : the initial contents of the array.

Finally, there are $q$ lines describing the queries. The format of each line is one of the following: "1 $k$ $a$ $x$ ", "2 $k$ $a$ $b$ " or "3 $k$ ".

  • $1 \le n, q \le 2 \cdot 10^5$
  • $1 \le t_i, x \le 10^9$
  • $1 \le a \le b \le n$

Output Format(To the terminal/stdout)

Print the answer to each sum query.

Sample Input

Copy
5 6
2 3 1 2 5
3 1
2 1 1 5
2 2 1 5
1 2 2 5
2 1 1 5
2 2 1 5
 · \n
 · · · · \n
 · \n
 · · · \n
 · · · \n
 · · · \n
 · · · \n
 · · · \n

Sample Output

Copy
13
13
13
15
  \n
  \n
  \n
  \n
Source: CSES, Range Queries, 1737

Submit

请先 登录

© 2025 FAQs