Truy vấn tổng đoạn con
Xem PDF
Điểm:
2300 (p)
Thời gian:
2.0s
Bộ nhớ:
512M
Input:
bàn phím
Output:
màn hình
Cho dãy \(a\) gồm \(n\) phần tử \(a_1, a_2, \dots , 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)\), \(\dots\), \((x_v, y_v)\) sao cho \(l \le x_1 \le y_1 < x_2 \le y2 < \dots < x_v \le yv \le r\) và tổng \(S = f (x_1, y_1) + f (x_2, y_2) + \dots + f (x_v, y_v)\) đạt giá trị lớn nhất có thể. Biết \(f (u, v) = a_u + a_{u+1} + \dots + a_v\). Bạn có thể không chọn cặp giá trị nào, lúc này \(S = 0\).
Tổng giá trị của k trong tất cả truy vấn không vượt quá \(10^5\). 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 chứa hai số nguyên \(n\) và \(q\) \((1 ≤ n, q ≤ 2 × 10^5)\)
- Dòng thứ hai chứa \(n\) số nguyên \(a_1, a_2, \dots , a_n (−10^9 ≤ a_i ≤ 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 ≤ i ≤ n, −10^9 ≤ v ≤ 10^9)\) biểu diễn 1 truy vấn loại 1.
– \(2\) \(l\) \(r\) \(k\) \((1 ≤ l ≤ r ≤ n, 1 ≤ k ≤ r − l + 1)\) biểu diễn 1 truy vấn loại 2. - Dữ liệu vào luôn đảm bảm 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ả 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\).
Scoring
- Subtask 1: (\(25\%\) số điểm) \(q \le 5\) và trong mọi truy vấn loại 2: \(k \le 20\).
- Subtask 2: (\(20\%\) số điểm) \(q \le 5\).
- Subtask 2: (\(15\%\) số điểm) Trong mọi truy vấn loại 2: \(k = 1\).
- Subtask 3: (\(20\%\) số điểm) Trong mọi truy vấn loại 2: \(k \le 8\).
- Subtask 4: (\(20\%\) số điểm) Không có ràng buộc gì thêm.
Example
Test 1
Input
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
Output
12
18
23
13
9
13
Bình luận