Truy vấn trên mảng
Xem dạng PDFMô 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:
- 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~.
- 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~.
- 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]
.
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
.
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]
.
- Tăng các phần tử trong đoạn ~[2, 4]~ lên ~2~:
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
.
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]
.
- Gán giá trị ~5~ cho các phần tử trong đoạn ~[2, 4]~:
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
Gửi bài giải
Kotlin
PyPy
Đ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
Pascal
Python
Scratch