普通的差分修改题,应用差分数组先求初始的差分值,然后多次区间修改后,求前缀和就可以了
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 5*1e6+5;
int a[N],b[N];
int main()
{
int n, p;
cin >> n >> p;
for (int i = 1;i <= n;i++)
{
cin >> a[i];
b[i] = a[i] - a[i - 1];
}
for (int i = 0;i < p;i++)
{
int x, y, z;
cin >> x >> y >> z;
b[x] += z, b[y + 1] -= z;
}
int MIN = 1000000;
for (int i = 1;i <= n;i++)
{
b[i] += b[i - 1];
MIN = min(b[i], MIN);
}
cout << MIN;
}