#A5233. 账户余额
账户余额
题目背景
学校一共有 n 个班级,编号 1 到 n。开学时,第 i 个班级的班费账户余额是 a_i 元。
财务处一共做了 m 次操作:第 j 次给编号在 [l_j, r_j] 之间(含两端)的每个班级账户同时加上 v_j 元;如果 v_j 是负数,就表示给这些班级统一扣款 |v_j| 元(余额可能因此变成负数,表示欠款)。
财务处想知道,所有操作做完后,每个班级账户的余额分别是多少。
题目描述
给定 n 个班级的初始余额 a_i,以及 m 次操作。第 j 次操作为 l_j, r_j, v_j,表示把编号从 l_j 到 r_j 的每个账户余额都加上 v_j。求全部操作结束后,第 1 到第 n 个账户的余额。
输入格式
第一行两个整数 n, m。
第二行 n 个整数 a_1, a_2, …, a_n,表示每个班级的初始余额。
接下来 m 行,每行三个整数 l, r, v,表示一次操作。
输出格式
一行 n 个整数,依次表示最终每个账户的余额,相邻两个数之间用一个空格分隔。
输入输出样例
5 2
3 1 4 1 5
1 3 2
2 5 -1
5 2 5 0 4
样例 1 解释
初始余额为 3 1 4 1 5。第一次给第 1~3 个账户各 +2,变成 5 3 6 1 5;第二次给第 2~5 个账户各 -1,变成 5 2 5 0 4。
说明/提示
- 1 ≤ n ≤ 10^5 - 1 ≤ m ≤ 10^5 - 1 ≤ l ≤ r ≤ n - 0 ≤ a_i ≤ 10^9 - -10^9 ≤ v ≤ 10^9 - 余额可能为负;结果可能很大,注意使用合适的数据类型