#include <bits/stdc++.h>
using namespace std;
vector<int> updateArray(vector<int>& arr, vector<vector<int>>& opr) {
int n = arr.size();
vector<int> diff(n + 1, 0);
// Apply all range updates
for (auto &op : opr) {
int l = op[0];
int r = op[1];
int v = op[2];
diff[l] += v;
diff[r + 1] -= v;
}
// Prefix sum and update original array
int running = 0;
for (int i = 0; i < n; i++) {
running += diff[i];
arr[i] += running;
}
return arr;
}
int main() {
vector<int> arr = {2, 3, 5, 6, 7};
vector<vector<int>> opr = {
{2, 4, 2},
{3, 4, -1}
};
vector<int> ans = updateArray(arr, opr);
cout << "Updated Array: ";
for (int x : ans) {
cout << x << " ";
}
cout << endl;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp2ZWN0b3I8aW50PiB1cGRhdGVBcnJheSh2ZWN0b3I8aW50PiYgYXJyLCB2ZWN0b3I8dmVjdG9yPGludD4+JiBvcHIpIHsKICAgIGludCBuID0gYXJyLnNpemUoKTsKCiAgICB2ZWN0b3I8aW50PiBkaWZmKG4gKyAxLCAwKTsKCiAgICAvLyBBcHBseSBhbGwgcmFuZ2UgdXBkYXRlcwogICAgZm9yIChhdXRvICZvcCA6IG9wcikgewogICAgICAgIGludCBsID0gb3BbMF07CiAgICAgICAgaW50IHIgPSBvcFsxXTsKICAgICAgICBpbnQgdiA9IG9wWzJdOwoKICAgICAgICBkaWZmW2xdICs9IHY7CiAgICAgICAgZGlmZltyICsgMV0gLT0gdjsKICAgIH0KCiAgICAvLyBQcmVmaXggc3VtIGFuZCB1cGRhdGUgb3JpZ2luYWwgYXJyYXkKICAgIGludCBydW5uaW5nID0gMDsKCiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgIHJ1bm5pbmcgKz0gZGlmZltpXTsKICAgICAgICBhcnJbaV0gKz0gcnVubmluZzsKICAgIH0KCiAgICByZXR1cm4gYXJyOwp9CgppbnQgbWFpbigpIHsKICAgIHZlY3RvcjxpbnQ+IGFyciA9IHsyLCAzLCA1LCA2LCA3fTsKCiAgICB2ZWN0b3I8dmVjdG9yPGludD4+IG9wciA9IHsKICAgICAgICB7MiwgNCwgMn0sCiAgICAgICAgezMsIDQsIC0xfQogICAgfTsKCiAgICB2ZWN0b3I8aW50PiBhbnMgPSB1cGRhdGVBcnJheShhcnIsIG9wcik7CgogICAgY291dCA8PCAiVXBkYXRlZCBBcnJheTogIjsKCiAgICBmb3IgKGludCB4IDogYW5zKSB7CiAgICAgICAgY291dCA8PCB4IDw8ICIgIjsKICAgIH0KCiAgICBjb3V0IDw8IGVuZGw7CgogICAgcmV0dXJuIDA7Cn0=