Truy vấn Đoạn và Sao chép

Đề bài

Mô tả

Bạn quản lý một danh sách các mảng, ban đầu chỉ có một mảng gồm n phần tử. Bạn cần xử lý q truy vấn thuộc ba loại:

  1. Cập nhật: Gán giá trị tại vị trí a trong mảng k bằng x.
  2. Tính tổng: Tính tổng các phần tử từ vị trí a đến b trong mảng k.
  3. Sao chép: Tạo một bản sao của mảng k và thêm vào cuối danh sách.

Dữ liệu vào

Dòng đầu chứa hai số nguyên n và q: kích thước mảng ban đầu và số truy vấn.

Dòng thứ hai chứa n số nguyên t1,t2,…,tn: các giá trị ban đầu của mảng.

  • q dòng tiếp theo, mỗi dòng mô tả một truy vấn:

  • 1 k a x — gán ta=x trong mảng k

  • 2 k a b — tính tổng từ a đến b trong mảng k
  • 3 k — sao chép mảng k

Dữ liệu ra

Với mỗi truy vấn loại 2, in ra tổng tương ứng.

Ràng buộc

  • 1≤n,q≤2·105
  • 1≤ti,x≤109
  • 1≤a≤b≤n
  • Mảng k luôn tồn tại tại thời điểm truy vấn

Ví dụ

Input Output Giải thích
5 6
2 3 1 2 5
3 1
2 1 1 5
2 2 1 5
1 2 2 5
2 1 1 5
2 2 1 5
13
13
13
15
Ban đầu mảng 1 = [2,3,1,2,5]. Sao chép mảng 1 → mảng 2 = [2,3,1,2,5]. Tổng [1,5] mảng 1 = 13. Tổng [1,5] mảng 2 = 13. Gán vị trí 2 mảng 2 = 5 → [2,5,1,2,5]. Tổng [1,5] mảng 1 = 13 (không đổi). Tổng [1,5] mảng 2 = 15.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0