[DHBB25 - DX07 - 11] Bài 3: Truy vấn tổng đoạn con
Xem dạng PDF
Gửi bài giải
C, C++, Java, Output Only, Pascal, PyPy, Python, Scratch, TEXT
Điểm:
70,00 (OI)
Giới hạn thời gian:
1.0s
Giới hạn bộ nhớ:
1G
Input:
stdin
Output:
stdout
Dạng bài
Ngôn ngữ cho phép
Trong trường hợp đề bài hiển thị không chính xác, bạn có thể tải đề bài tại đây: Đề bài
Cho dãy ~a~ gồm ~n~ phần tử ~a_1, a_2, ..., a_n~. Bạn cần thực hiện hai loại truy vấn sau:
- Loại 1:
1 i v. Gán giá trị của ~a_i~ thành ~v~. - Loại 2:
2 l r k. Chọn ra ~v~ (~0 \le v \le k~) cặp giá trị ~(x_1, y_1), (x_2, y_2), ..., (x_v, y_v)~ sao cho ~l \le x_1 \le y_1 < x_2 \le y_2 < ... < x_v \le y_v \le r~ và tổng ~S = f(x_1, y_1) + f(x_2, y_2) + ... + f(x_v, y_v)~ đạt giá trị lớn nhất có thể. Biết ~f(u, v) = a_u + a_{u+1} + ... + a_v~. Bạn có thể không chọn cặp giá trị nào, lúc này ~S = 0~.
Yêu cầu: Với mỗi truy vấn loại 2, hãy in ra giá trị lớn nhất có thể của ~S~.
Input
- Dòng đầu tiên chứa hai số nguyên ~n~ và ~q~ (~1 \le n, q \le 2 \times 10^5~).
- Dòng thứ hai chứa ~n~ số nguyên ~a_1, a_2, ..., a_n~ (~-10^9 \le a_i \le 10^9~).
- Tiếp theo là ~q~ dòng miêu tả các truy vấn thuộc 2 dạng sau:
1 i v(~1 \le i \le n, -10^9 \le v \le 10^9~) biểu diễn 1 truy vấn loại 1.2 l r k(~1 \le l \le r \le n, 1 \le k \le 20~) biểu diễn 1 truy vấn loại 2.
- Dữ liệu vào luôn đảm bảo luôn có ít nhất một truy vấn loại 2 và tổng giá trị của ~k~ trong tất cả các truy vấn không vượt quá ~10^5~.
Output
- Với mỗi truy vấn loại 2, hãy in ra giá trị lớn nhất có thể của ~S~.
Sample Input 1
10 8
7 -5 4 3 -2 -1 4 2 -7 6
2 1 10 1
2 1 10 2
2 1 10 3
2 2 9 2
1 5 -6
1 9 -5
2 1 10 1
2 3 8 2
Sample Output 1
12
18
23
13
9
13
Subtasks
| Subtask | Điểm | Ràng buộc |
|---|---|---|
| 1 | ~1.5~ | ~q \le 5~ và trong mọi truy vấn loại 2: ~k \le 20~. |
| 2 | ~1.2~ | ~q \le 5~. |
| 3 | ~0.9~ | ~n, q \le 1000, k \le 1~. |
| 4 | ~1.2~ | Trong mọi truy vấn loại 2: ~k \le 8~. |
| 5 | ~1.2~ | Không có ràng buộc gì thêm. |
Bình luận