AC

陈源锋  •  2个月前


include

include

using namespace std;

int main() {

int n, m;
cin >> n >> m;

vector<int> arr(n + 1, 0); // 原始数组,使用 n + 1 以便从 1 开始
vector<int> diff(n + 2, 0); // 差分数组,使用 n + 2 以避免越界

// 读取原始数组
for (int i = 1; i <= n; i++) {
    cin >> arr[i];
}

// 处理每个操作
for (int i = 0; i < m; i++) {
    int l, r, c;
    cin >> l >> r >> c;
    diff[l] += c; // 从 l 开始加 c
    if (r + 1 <= n) {
        diff[r + 1] -= c; // 在 r + 1 停止加 c
    }
}

// 应用差分数组到原始数组
int current_addition = 0; // 当前加上的值
for (int i = 1; i <= n; i++) {
    current_addition += diff[i]; // 更新当前加上的值
    arr[i] += current_addition; // 更新原始数组
}

// 输出最终结果
for (int i = 1; i <= n; i++) {
    cout << arr[i] << " ";
}
cout << endl;

return 0;

}


评论:

请先登录,才能进行评论