陈源锋 • 8个月前
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;
}
评论:
请先登录,才能进行评论