Truy vấn tổng đoạn con

Xem PDF




Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Đ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\)\(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

Mới nhất
Tải bình luận...

Không có bình luận nào.