Loading [MathJax]/jax/output/HTML-CSS/jax.js
编程题
                ### 问题描述

Nick 最近沉迷于一款角色养成游戏,他有 n 个角色,分别为 p1,p2,p3, ... ,pn ,每个角色有当前经验值 ai

在接下来的 m 次操作中,它可以使角色 pi 以及其左右的 d 名角色都增加 w 经验值或者查询角色 pi 的当前经验值。

例如,在一次操作中,若 n=5,i=3,d=1,w=3 ,则 p3p3 左边的一个角色 p2 以及 p3 右边的一个角色 p4 ,即 p2,p3,p4 这三个角色都增加 3 点经验值。

但需要注意的是,若该角色向左 d 个位置或向右 d 个位置后超出长度为 n 的区间,则会从另一端开始,继续延伸剩余位置。

例如,在另一次操作中,若 n=10,i=1,d=2,w=5 ,则 p1,p2,p3,p9,p10 五个角色都增加 5 点经验值( n=10 ,第一个角色向左 2 个位置,超出区间左端,因此从右端,即第 10 个角色开始向左 2 个位置,若超出区间右端,同理从区间左端开始向右)。但是即使一个角色被多次记入区间中,依然只会增加一次 w 经验值,如 n=3,i=2,d=6,w=6 ,此时这三个角色都被多次计入增加经验值的区间,但只增加 6 点经验值。

你需要做的就是帮助 Nick 在每次查询操作中,将查询的结果输出。

输入格式

第一行给出两个整数 nm ,表示角色个数和操作次数。

接下来一行输入 n 个整数,表示每个角色的初始经验值 ai

接下来 m 行,每行输入 1 i d w2 i 表示一个操作。

第一个数字 op 表示操作种类:

op=1 ,修改操作。

输入三个整数 i,d,w 。表示将 a 数组的第 i 位以及向左右按规则各延伸 d 个单位的角色都增加 w 点经验值。

op=2 ,查询操作。

输入一个整数 i ,表示查询 n 个角色中的第 i 个角色的当前经验值。

输出格式

对于每个 op=2 的操作,在每一行中打印该角色当前经验值。

样例输入

5 6
1 2 3 4 5
1 3 1 4
2 2
1 2 3 4
2 4
1 5 1 2
2 1

样例输出

6
12
7

评测数据规模

对于所有评测数据: 1n,m,d1061ai,w1091in

对于所有评测数据,保证答案的范围小于 264

查看答案
赣ICP备20007335号-2