AcWing 797. 差分

题目传送门

#include <bits/stdc++.h>

using namespace std;
const int N = 100010;
int n, m;
int a[N], b[N];

/**
 * 功能:差分计算
 * @param l 左边界
 * @param r 右边界
 * @param c 值
 */
void insert(int l, int r, int c) {
    b[l] += c;
    b[r + 1] -= c;
}
int main() {
    cin >> n >> m;
    for (int i = 1; i <= n; i++) cin >> a[i], insert(i, i, a[i]);
    while (m--) {
        int l, r, c;
        cin >> l >> r >> c;
        insert(l, r, c);
    }
    for (int i = 1; i <= n; i++)
        a[i] = a[i - 1] + b[i], printf("%d ", a[i]);
    return 0;
}
上一篇:计算两个日期相差多少


下一篇:解决js计算精度丢失问题