[DHBB25 - DX07 - 11] Bài 3: Truy vấn tổng đoạn con

Xem dạng PDF

Gửi bài giải

Đ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
C, C++, Java, Output Only, Pascal, PyPy, Python, Scratch, TEXT

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

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.