题目背景
某数据中心有两组存储阵列:工作阵列 W 和备份阵列 B,每组各有 n 个存储单元。
系统管理员会定期将 W 中的部分数据备份到 B 中。W 是只读的(初始给定后不会再变化),而 B 会不断被备份数据覆盖。
题目描述
给定长度为 n 的数组 W(只读),以及一个初始全为 0 的数组 B,支持两种操作:
1 x k y:将 W[x..x+k−1](共 k 个元素)复制到 B[y..y+k−1]。即对每个 0≤d<k,B[y+d]:=W[x+d]。
2 p:查询 B[p] 的值。
输入格式
第一行两个整数 n,m。
第二行 n 个整数 W1,W2,…,Wn。
接下来 m 行,每行一个操作。
输出格式
对于每个查询操作,输出一行一个整数。
样例
样例输入
6 6
3 1 4 1 5 9
1 2 2 3
2 4
1 1 3 2
2 2
1 3 2 5
2 6
样例输出
4
3
1
样例解释
初始 W=[3,1,4,1,5,9],B=[0,0,0,0,0,0]
1 2 2 3:W[2..3]=[1,4] 复制到 B[3..4],B=[0,0,1,4,0,0]
2 4:B[4]=4,输出 4
1 1 3 2:W[1..3]=[3,1,4] 复制到 B[2..4],B=[0,3,1,4,0,0]
2 2:B[2]=3,输出 3
1 3 2 5:W[3..4]=[4,1] 复制到 B[5..6],B=[0,3,1,4,4,1]
2 6:B[6]=1,输出 1
数据范围
| 测试点 |
n |
m |
| 1∼8 |
n≤100 |
m≤100 |
| 9∼18 |
n≤105 |
m≤105 |
| 19∼20 |
特殊边界 |
— |
对于所有数据:1≤n,m≤105,1≤x,y≤n,1≤k≤n,x+k−1≤n,y+k−1≤n,0≤Wi<230。