fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. vector<int> updateArray(vector<int>& arr, vector<vector<int>>& opr) {
  5. int n = arr.size();
  6.  
  7. vector<int> diff(n + 1, 0);
  8.  
  9. // Apply all range updates
  10. for (auto &op : opr) {
  11. int l = op[0];
  12. int r = op[1];
  13. int v = op[2];
  14.  
  15. diff[l] += v;
  16. diff[r + 1] -= v;
  17. }
  18.  
  19. // Prefix sum and update original array
  20. int running = 0;
  21.  
  22. for (int i = 0; i < n; i++) {
  23. running += diff[i];
  24. arr[i] += running;
  25. }
  26.  
  27. return arr;
  28. }
  29.  
  30. int main() {
  31. vector<int> arr = {2, 3, 5, 6, 7};
  32.  
  33. vector<vector<int>> opr = {
  34. {2, 4, 2},
  35. {3, 4, -1}
  36. };
  37.  
  38. vector<int> ans = updateArray(arr, opr);
  39.  
  40. cout << "Updated Array: ";
  41.  
  42. for (int x : ans) {
  43. cout << x << " ";
  44. }
  45.  
  46. cout << endl;
  47.  
  48. return 0;
  49. }
Success #stdin #stdout 0.01s 5244KB
stdin
Standard input is empty
stdout
Updated Array: 2 3 7 7 8