题目背景:
语文考试结束了,成绩还是一如既往地有问题。
题目描述:
语文老师总是写错成绩,所以当她修改成绩的时候,总是累得不行。她总是要一遍遍地给某些同学增加分数,又要注意最低分是多少。你能帮帮她吗?
输入格式:
第一行有两个整数 n, p,代表学生数与增加分数的次数。
第二行有 n 个数,a[1] ~ a[n] ,代表各个学生的初始成绩。
接下来 p 行,每行有三个数,x,y,z,代表给第 x 个到第 y 个学生每人增加 z 分。
输出格式:
输出仅一行,代表更改分数后,全班的最低分。
输入输出样例:
输入 #1:
3 2
1 1 1
1 2 1
2 3 1
输出 #1:
2
说明/提示:
1.对于 40%的数据,有 n ≤ 10 * 10 * 10 。
2.对于 60%的数据,有 n ≤ 10 * 10 * 10 * 10。
3.对于 80%的数据,有 n ≤ 10 * 10 * 10 * 10 * 10。
4.对于 100%的数据,有n ≤ 5 *10 * 10 * 10 * 10 * 10 * 10,p ≤ n,学生初始成 ≤ 100,z ≤ 100。
解题思路:
1.创建数组把初始成绩存起来。
2.用一维差分,求第 i 个数和 i - 1 个数之间的差:
c[i] = a[i] - a[i-1];
3.再算出它的前缀和:
for (int i = 1; i <= p; i++) {
cin