#9975. 数组的历史版本

    ID: 9975 传统题 1000ms 256MiB 尝试: 0 已通过: 0 难度: (无) 上传者: 标签>可持久化线段树主席树历史版本单点修改单点查询

数组的历史版本

题目描述

给定一个长度为 nn 的初始数组,编号为版本 00。接下来进行 mm 次操作,每次操作都会产生一个新版本,当前第 ii 次操作产生的版本编号为 ii

操作分为两种:

  • 1 v p x:以版本 vv 为基础,将第 pp 个数修改为 xx,产生版本 ii
  • 2 v p:查询版本 vv 中第 pp 个数的值,并产生一个与版本 vv 完全相同的版本 ii

输入格式

第一行包含两个整数 n,mn,m
第二行包含 nn 个整数,表示版本 00 的数组。
接下来 mm 行,每行表示一次操作,格式见题目描述。

输出格式

对于每次操作 2,输出一行一个整数,表示查询结果。

5 6
1 2 3 4 5
2 0 3
1 0 3 10
2 2 3
1 2 1 -7
2 4 1
2 1 3
3
10
-7
3

数据范围与提示

  • 1n,m2×1051 \le n,m \le 2\times 10^5
  • 109ai,x109-10^9 \le a_i,x \le 10^9
  • 0v<i0 \le v<i
  • 1pn1 \le p \le n