Chia dãy

Đề bài

Mô tả

Alice có một dãy số gồm n phần tử A=(a1,a2,…,an). Alice muốn chia dãy A thành một số đoạn con liên tiếp sao cho tổng giá trị mỗi đoạn con là lớn nhất. Giá trị của một đoạn con được định nghĩa là hiệu số giữa phần tử lớn nhất và phần tử nhỏ nhất trong đoạn con đó.

Alice cần xử lí Q thao tác thuộc một trong hai loại sau:

  1. Loại 1 có dạng 1 l r x, nghĩa là gán ai=ai+x với mọi l≤i≤r.
  2. Loại 2 có dạng 2 l r, nghĩa là tìm cách chia dãy gồm các phần tử từ l đến r của dãy A thành các đoạn con liên tiếp sao cho tổng giá trị là lớn nhất có thể.

Với mỗi thao tác loại 2 hãy đưa ra tổng giá trị lớn nhất khi chia.

Dữ liệu vào

  • Dòng đầu tiên chứa hai số nguyên dương n,Q.
  • Dòng thứ hai chứa n số nguyên a1,a2,…,an.
  • Q dòng tiếp theo, mỗi dòng chứa một trong hai loại thao tác như mô tả ở trên.

Dữ liệu ra

  • Gồm nhiều dòng, mỗi dòng ghi một số là tổng giá trị lớn nhất tương ứng khi thực hiện thao tác loại 2.

Ràng buộc

  • 1≤n,Q≤2×105
  • |ai|≤106
  • Trong tất cả các thao tác: 1≤l≤r≤n và |x|≤106.
  • Subtask 1 (25%): n≤20; Q=1.
  • Subtask 2 (25%): n,Q≤200.
  • Subtask 3 (25%): n,Q≤3000.
  • Subtask 4 (25%): Không có ràng buộc nào thêm.

Ví dụ

Input Output Giải thích
4 3
1 2 3 4
2 1 4
1 1 1 2
2 1 4
3
2
Thao tác 1: chia [1,2,3,4] thành một đoạn, giá trị =4−1=3.
Thao tác 2 cộng 2 vào a1, dãy thành [3,2,3,4].
Thao tác 3: chia [3,2 ‖ 3,4], tổng =(3−2)+(4−3)=2.
1 1
5
2 1 1
0 Đoạn chỉ có một phần tử, giá trị =5−5=0.

Ghi chú

Một đoạn con chỉ gồm một phần tử có giá trị bằng 0. Có thể chia thành các đoạn tùy ý (kể cả mỗi phần tử một đoạn).

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0