Truy vấn trên mảng

Xem dạng PDF

Mô tả bài toán: Truy vấn trên mảng

Nhiệm vụ của bạn là duy trì một mảng gồm ~n~ giá trị và xử lý hiệu quả các truy vấn sau:

  1. Tăng giá trị trong đoạn ~[a, b]~ lên ~x~: Tăng mỗi phần tử trong đoạn lên ~x~.
  2. Gán giá trị trong đoạn ~[a, b]~ thành ~x~: Gán mỗi phần tử trong đoạn bằng ~x~.
  3. Tính tổng trong đoạn ~[a, b]~: Tính tổng các giá trị trong đoạn.

Input:

  • Dòng đầu tiên chứa hai số nguyên ~n~ và ~q~: kích thước mảng và số lượng truy vấn.
  • Dòng tiếp theo chứa ~n~ giá trị ~t_1, t_2, ..., t_n~: nội dung ban đầu của mảng.
  • Sau đó có ~q~ dòng, mỗi dòng mô tả một truy vấn:
    • 1 a b x: Tăng các phần tử trong đoạn ~[a, b]~ lên ~x~.
    • 2 a b x: Gán các phần tử trong đoạn ~[a, b]~ bằng ~x~.
    • 3 a b: Tính tổng các phần tử trong đoạn ~[a, b]~.

Output:

  • Với mỗi truy vấn loại 3, in ra tổng của đoạn được yêu cầu.

Ràng buộc:

  • ~1 \leq n, q \leq 2 \cdot 10^5~
  • ~1 \leq t_i, x \leq 10^6~
  • ~1 \leq a \leq b \leq n~

Ví dụ:

Input:
6 5
2 3 1 1 5 3
3 3 5
1 2 4 2
3 3 5
2 2 4 5
3 3 5
Output:
7
11
15

Giải thích ví dụ:

  • Mảng ban đầu: [2, 3, 1, 1, 5, 3].
  1. Truy vấn 3 3 5:

    • Yêu cầu tính tổng trong đoạn ~[3, 5]~: ~1 + 1 + 5 = 7~.
    • Kết quả là 7.
  2. Truy vấn 1 2 4 2:

    • Tăng các phần tử trong đoạn ~[2, 4]~ lên ~2~:
      • ~3 + 2 = 5~,
      • ~1 + 2 = 3~,
      • ~1 + 2 = 3~.
    • Mảng sau cập nhật: [2, 5, 3, 3, 5, 3].
  3. Truy vấn 3 3 5:

    • Yêu cầu tính tổng trong đoạn ~[3, 5]~: ~3 + 3 + 5 = 11~.
    • Kết quả là 11.
  4. Truy vấn 2 2 4 5:

    • Gán giá trị ~5~ cho các phần tử trong đoạn ~[2, 4]~:
      • ~5 \to 5~,
      • ~3 \to 5~,
      • ~3 \to 5~.
    • Mảng sau cập nhật: [2, 5, 5, 5, 5, 3].
  5. Truy vấn 3 3 5:

    • Yêu cầu tính tổng trong đoạn ~[3, 5]~: ~5 + 5 + 5 = 15~.
    • Kết quả là 15.



Bình luận

Hãy đọc nội quy trước khi bình luận.

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

Gửi bài giải
Điểm: 10,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout
Nguồn bài: CSES
Dạng bài
CSES
Ngôn ngữ cho phép
C
C++
Java
Kotlin
Pascal
PyPy
Python
Scratch