Guest User

sqrt_sum

a guest
Nov 1st, 2025
32
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.75 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. void solve(){
  6.  
  7.     int n;
  8.     cin >> n;
  9.     int len = sqrt(n);
  10.     for (int i = 0; i < n; i++){
  11.         cin >> a[i];
  12.         block_num[i] = i / len;
  13.         block[block_num[i]] += a[i];
  14.         if (i % len == 0){
  15.             block_start[i] = 1;
  16.         }
  17.     }
  18.  
  19.     int q;
  20.     cin >> q;
  21.     for (int t = 0; t < q; t++){
  22.         int type;
  23.         cin >> type;
  24.         if (type == 1){
  25.             int l, r;
  26.             cin >> l >> r;
  27.             l--;
  28.             r--;
  29.  
  30.             int sum = 0;
  31.             for (int i = l; i <= r; ){
  32.                 if (block_start[i] && i + len - 1 <= r)){
  33.                     sum += block[block_num[i]];
  34.                     i += len;
  35.                 }
  36.                 else{
  37.                     sum += a[i] + add[block_num[i]];
  38.                     i++;
  39.                 }
  40.             }
  41.             cout << sum << '\n';
  42.         }
  43.         else if (type == 2){
  44.             int x, val;
  45.             cin >> x >> val;
  46.             block[block_num[x]] -= a[x];
  47.             block[block_num[x]] += val;
  48.             a[x] = val - add[block_num[x]];
  49.         }
  50.         else if (type == 3){
  51.             int l, r, val;
  52.             cin >> l >> r >> val;
  53.  
  54.             for (int i = l; i <= r; ){
  55.                 if (block_start[i] && i + len - 1 <= r){
  56.                     block[block_num[i]] += len * val;
  57.                     add[block_num[i]] += val;
  58.                     i += len;
  59.                 }
  60.                 else{
  61.                     a[i] += val;
  62.                     block[block_num[i]] += val;
  63.                 }
  64.             }
  65.  
  66.         }
  67.     }
  68.  
  69.  
  70. }
  71.  
  72. int main() {
  73.  
  74.     int t = 1;
  75.     cin >> t;
  76.  
  77.     while (t--){
  78.         solve();
  79.     }
  80. }
  81.  
  82.  
  83.  
Advertisement
Add Comment
Please, Sign In to add comment