trang chủ / đề bài / incarrayq

Truy vấn Mảng Tăng dần

Đề bài

Mô tả

Cho mảng n số nguyên x1,x2,…,xn. Với mỗi truy vấn cho đoạn [a,b], hãy tính số phép tăng tối thiểu (mỗi phép tăng một phần tử lên 1) để đoạn con xa,xa+1,…,xb trở thành không giảm (tức xi≤xi+1 với mọi i).

Dữ liệu vào

  • Dòng 1: Hai số nguyên n và q (1≤n,q≤2×105).
  • Dòng 2: n số nguyên x1,x2,…,xn (1≤xi≤109).
  • q dòng tiếp theo: Mỗi dòng gồm hai số nguyên a và b (1≤a≤b≤n).

Dữ liệu ra

Với mỗi truy vấn, in ra số phép tăng tối thiểu trên một dòng.

Ràng buộc

  • 1≤n,q≤2×105
  • 1≤xi≤109
  • 1≤a≤b≤n

Ví dụ

Input Output Giải thích
5 3
2 10 4 2 5
3 5
2 2
1 4
2
0
14
Đoạn [3,5]=[4,2,5]: tăng thành [4,4,5], tốn 2 phép. Đoạn [2,2]=[10]: đã không giảm. Đoạn [1,4]=[2,10,4,2]: tăng thành [2,10,10,10], tốn (10−4)+(10−2)=14 phép.
4 2
5 3 2 1
1 4
2 3
9
1
Đoạn [1,4]=[5,3,2,1]: tăng thành [5,5,5,5], tốn (5−3)+(5−2)+(5−1)=9 phép. Đoạn [2,3]=[3,2]: tăng thành [3,3], tốn 1 phép.

Ghi chú

Để đoạn [a,b] không giảm với chi phí nhỏ nhất, ta chỉ được tăng (không giảm) phần tử. Phần tử thứ i sau khi tối ưu bằng max(xa,xa+1,…,xi). Chi phí là ∑i=ab(max(xa,…,xi)−xi).

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