fork download
  1. #include <bits/stdc++.h>
  2. #define ull unsigned long long
  3. #define ll long long
  4. #define el endl
  5. #define all(v) v.begin(), v.end()
  6. #define nl '\n'
  7.  
  8. using namespace std;
  9.  
  10. int main()
  11. {
  12. ios_base::sync_with_stdio(false);
  13. cin.tie(NULL);
  14.  
  15. ll n, q;
  16. if (!(cin >> n >> q))
  17. return 0;
  18.  
  19. vector<ll> vc(n);
  20. for (int i = 0; i < n; i++)
  21. {
  22. cin >> vc[i];
  23. }
  24.  
  25. // إنشاء مصفوفة الفروق بالحجم n + 1 لتجنب Out of Bounds عند R
  26. vector<ll> diff(n + 1, 0);
  27.  
  28. while (q--)
  29. {
  30. ll l, r, val;
  31. cin >> l >> r >> val;
  32.  
  33. // O(1) لكل استعلام بدلاً من اللوب
  34. diff[l - 1] += val;
  35. diff[r] -= val;
  36. }
  37.  
  38. // حساب المجموع التراكمي وتطبيقه على الفيكتور الأصلي
  39. ll sum = 0;
  40. for (int i = 0; i < n; i++)
  41. {
  42. sum += diff[i];
  43. vc[i] += sum;
  44. }
  45.  
  46. // طباعة الناتج النهائي
  47. for (int i = 0; i < n; i++)
  48. {
  49. cout << vc[i] << (i == n - 1 ? "" : " ");
  50. }
  51. cout << nl;
  52.  
  53. return 0; // 4 3 7 5 6
  54. }
Success #stdin #stdout 0s 5304KB
stdin
Standard input is empty
stdout
Standard output is empty