CSES - Range Queries and Copies | Truy vấn đoạn và bản sao

Xem PDF



Tác giả:
Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 2100 (p) Thời gian: 1.0s Bộ nhớ: 512M Input: bàn phím Output: màn hình

Nhiệm vụ của bạn là duy trì một danh sách các mảng, danh sách ban đầu chỉ có một mảng duy nhất. Bạn phải xử lý các loại truy vấn sau:

  1. Gán giá trị \(a\) trong mảng \(k\) thành \(x\).
  2. Tính tổng các giá trị trong đoạn \([a,b]\) trong mảng \(k\).
  3. Tạo một bản sao của mảng \(k\) và thêm nó vào cuối danh sách.

Input

  • Dòng đầu tiên chứa hai số nguyên \(n\)\(q\): kích thước của mảng và số lượng truy vấn.
  • Dòng tiếp theo chứa \(n\) số nguyên \(t_1, t_2, \dots, t_n\): các giá trị ban đầu của mảng.
  • \(q\) dòng cuối cùng mô tả các truy vấn. Định dạng của từng truy vấn là một trong các kiểu sau: 1 k a x, 2 k a b hoặc 3 k.

Constraints

  • \(1 \le n, q \le 2 \times 10^5\)
  • \(1 \le t_i, x \le 10^9\)
  • \(1 \le a \le b \le n\)

Output

  • In ra kết quả của từng truy vấn tính tổng.

Example

Test 1

Input
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
Output
13
13
13
15

Bình luận (8)

Mới nhất
Tải bình luận...

Kỳ thi: