#511. ITQPMAX – Truy vấn cặp lớn nhất

Bộ nhớ: 256 MiB Thời gian: 500 ms Nhập/xuất từ luồng chuẩn
Kiểu bài: Thông thường Kiểu chấm: So sánh văn bản
Đưa lên bởi: Trùm CUỐI

Đề bài

Cho dãy số nguyên gồm n phần tử a_1, a_2, …, a_n Q truy vấn. Mỗi truy vấn có một trong hai dạng:

  • Dạng 1:\ 1\ i\ x: thay số ở vị trí i bằng giá trị mới x (tức là a_i = x );
  • Dạng 2:\ 2\ u\ v: Tìm tổng lớn nhất của hai số phân biệt trong đoạn [u, v] (tức là bạn cần tìm hai số u ≤ i < j ≤ v sao cho a_i + a_j đạt giá trị lớn nhất).

Dữ liệu vào:

  • Dòng đầu chứa hai số nguyên dương n Q ;
  • Dòng thứ hai chứa n số nguyên a_1, a_2, …, a_n ;
  • Q dòng tiếp theo, mỗi dòng là 3 số nguyên mô tả một truy vấn.

Hai số liên tiếp trên một dòng được ghi cách nhau ít nhất một dấu cách.

Dữ liệu ra:

  • Ghi trên một dòng nhiều số nguyên, mỗi số là câu trả lời cho truy vấn loại 2 (theo đúng thứ tự thực hiện các truy vấn), hai số liên tiếp ghi cách nhau một khoảng trắng.

Ví dụ:

Dữ liệu vào:
5 3
2 -1 5 3 -3
2 1 4
1 3 3
2 2 5
Dữ liệu ra:
8 6
Giải thích:
  • Với truy vấn 1: Tìm tổng lớn nhất của hai số phân biệt trên đoạn [1, 4] ta có 5 + 3 = 8 là đáp án;
  • Với truy vấn 2: Thay số thứ ba thành 3 ta được dãy 2, -1, 3, 3, -3 ;
  • Với truy vấn 3: Tìm tổng lớn nhất của hai số phân biệt trên đoạn [2, 5] ta có 3 + 3 = 6 là đáp án;

Giới hạn:

  • 1 ≤ n ≤ 10^6; 1 ≤ u < v ≤ n; 1 ≤ Q ≤ 10^5; |x|, |a_i| ≤ 10^9 .