Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- void solve(){
- int n;
- cin >> n;
- int len = sqrt(n);
- for (int i = 0; i < n; i++){
- cin >> a[i];
- block_num[i] = i / len;
- block[block_num[i]] += a[i];
- if (i % len == 0){
- block_start[i] = 1;
- }
- }
- int q;
- cin >> q;
- for (int t = 0; t < q; t++){
- int type;
- cin >> type;
- if (type == 1){
- int l, r;
- cin >> l >> r;
- l--;
- r--;
- int sum = 0;
- for (int i = l; i <= r; ){
- if (block_start[i] && i + len - 1 <= r)){
- sum += block[block_num[i]];
- i += len;
- }
- else{
- sum += a[i] + add[block_num[i]];
- i++;
- }
- }
- cout << sum << '\n';
- }
- else if (type == 2){
- int x, val;
- cin >> x >> val;
- block[block_num[x]] -= a[x];
- block[block_num[x]] += val;
- a[x] = val - add[block_num[x]];
- }
- else if (type == 3){
- int l, r, val;
- cin >> l >> r >> val;
- for (int i = l; i <= r; ){
- if (block_start[i] && i + len - 1 <= r){
- block[block_num[i]] += len * val;
- add[block_num[i]] += val;
- i += len;
- }
- else{
- a[i] += val;
- block[block_num[i]] += val;
- }
- }
- }
- }
- }
- int main() {
- int t = 1;
- cin >> t;
- while (t--){
- solve();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment