Hustlingbeast_Anish

Untitled

Mar 15th, 2023
613
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.68 KB | None | 0 0
  1. /*
  2. .----------------.  .-----------------. .----------------.  .----------------.  .----------------.
  3. | .--------------. || .--------------. || .--------------. || .--------------. || .--------------. |
  4. | |      __      | || | ____  _____  | || |     _____    | || |    _______   | || |  ____  ____  | |
  5. | |     /  \     | || ||_   \|_   _| | || |    |_   _|   | || |   /  ___  |  | || | |_   ||   _| | |
  6. | |    / /\ \    | || |  |   \ | |   | || |      | |     | || |  |  (__ \_|  | || |   | |__| |   | |
  7. | |   / ____ \   | || |  | |\ \| |   | || |      | |     | || |   '.___`-.   | || |   |  __  |   | |
  8. | | _/ /    \ \_ | || | _| |_\   |_  | || |     _| |_    | || |  |`\____) |  | || |  _| |  | |_  | |
  9. | ||____|  |____|| || ||_____|\____| | || |    |_____|   | || |  |_______.'  | || | |____||____| | |
  10. | |              | || |              | || |              | || |              | || |              | |
  11. | '--------------' || '--------------' || '--------------' || '--------------' || '--------------' |
  12.  '----------------'  '----------------'  '----------------'  '----------------'  '----------------'
  13. */
  14. #include <bits/stdc++.h>
  15. #include <algorithm>
  16. #define lli long long int
  17. #define li long int
  18. #define ll long long
  19. #define vi vector<lli>
  20. #define umii unordered_map<lli, lli>
  21. #define usi unordered_set<lli>
  22. #define usc unordered_set<char>
  23. #define umci unordered_map<char, lli>
  24. #define vii vector<pair<lli, lli>>
  25. #define pii pair<lli, lli>
  26. #define w(t)  \
  27.     lli t;    \
  28.     cin >> t; \
  29.     while (t--)
  30. #define mod 1000000007
  31. #define ld long double
  32. #define all(x) x.begin(), x.end()
  33. #define F first
  34. #define S second
  35. #define PB push_back
  36. #define MP make_pair
  37. #define REP(i, a, b) for (lli i = a; i < b; i++)
  38. using namespace std;
  39.  
  40. lli n, q;
  41. vi seg;
  42.  
  43. void updateSegment(lli idx, lli low, lli high, lli l, lli r)
  44. {
  45.     if (low == high)
  46.     {
  47.         // Leaf Node
  48.         seg[idx]++;
  49.         return;
  50.     }
  51.     if (low >= l && high <= r)
  52.     {
  53.         // Complete Overlap
  54.         seg[idx]++;
  55.         return;
  56.     }
  57.     // lli mid = low + (high - low) / 2;
  58.     lli mid = (high + low) / 2;
  59.     if (l <= mid)
  60.     {
  61.         updateSegment(2 * idx + 1, low, mid, l, r);
  62.     }
  63.     if (mid < r)
  64.     {
  65.         updateSegment(2 * idx + 2, mid + 1, high, l, r);
  66.     }
  67. }
  68. void performLazyUpdates(lli idx, lli low, lli high, lli x, lli time, vi &nums)
  69. {
  70.     time += seg[idx];
  71.     if (low == high)
  72.     {
  73.         lli val = nums[x];
  74.         while (time--)
  75.         {
  76.             if (val < 10)
  77.                 break;
  78.             lli upval = 0;
  79.             while (val != 0)
  80.             {
  81.                 upval += val % 10;
  82.                 val = val / 10;
  83.             }
  84.             val = upval;
  85.         }
  86.         cout << val << endl;
  87.         return;
  88.     }
  89.     // lli mid = low + (high - low) / 2;
  90.     lli mid = (high + low) / 2;
  91.     if (mid >= x)
  92.     {
  93.         performLazyUpdates(2 * idx + 1, low, mid, x, time, nums);
  94.     }
  95.     else
  96.     {
  97.         performLazyUpdates(2 * idx + 2, mid + 1, high, x, time, nums);
  98.     }
  99. }
  100. void solve()
  101. {
  102.     cin >> n >> q;
  103.     seg.resize(4 * n, 0);
  104.     vi nums(n);
  105.     REP(i, 0, n)
  106.     cin >> nums[i];
  107.  
  108.     while (q--)
  109.     {
  110.         lli type;
  111.         cin >> type;
  112.  
  113.         if (type == 1)
  114.         {
  115.             lli l, r;
  116.             cin >> l >> r;
  117.  
  118.             l--;
  119.             r--;
  120.             updateSegment(0, 0, n - 1, l, r);
  121.         }
  122.         else
  123.         {
  124.             lli x;
  125.             cin >> x;
  126.             x--;
  127.             performLazyUpdates(0, 0, n - 1, x, 0, nums);
  128.         }
  129.     }
  130. }
  131. int main()
  132. {
  133.     ios_base::sync_with_stdio(false);
  134.     cin.tie(NULL);
  135.  
  136.     w(t)
  137.     {
  138.         solve();
  139.     }
  140.     return 0;
  141. }
Advertisement
Add Comment
Please, Sign In to add comment