trang chủ / đề bài / rivermark

Vạch mực nước

Đề bài

Mô tả

Arkady quan sát một con sông trong n ngày liên tiếp. Mực nước của sông trong ngày thứ i là một số thực nào đó.

Mỗi ngày Arkady ra bờ sông và khắc một vạch lên thành kênh tại đúng độ cao của mực nước ngày hôm đó. Nếu tại độ cao ấy đã có sẵn một vạch từ trước thì không có vạch mới nào được tạo ra. Nước không bao giờ xoá đi các vạch đã khắc, và trước ngày thứ nhất thành kênh chưa có vạch nào.

Ngày thứ i, Arkady ghi lại mi là số vạch nằm hoàn toàn phía trên mực nước ngày đó.

Gọi di là số vạch nằm hoàn toàn phía dưới mực nước ngày thứ i. Lưu ý rằng mỗi ngày luôn tồn tại đúng một vạch nằm ngay tại mực nước, nên nếu ngày thứ i thành kênh có tổng cộng ti vạch thì ti=mi+1+di.

Biết dãy m1,m2,…,mn, hãy tìm giá trị nhỏ nhất có thể của tổng d1+d2+⋯+dn trên mọi kịch bản mực nước phù hợp với dãy đã cho.

Dữ liệu vào

  • Dòng đầu chứa một số nguyên dương n là số ngày quan sát.
  • Dòng thứ hai chứa n số nguyên m1,m2,…,mn.

Dữ liệu ra

Một số nguyên duy nhất là tổng nhỏ nhất có thể của số vạch nằm dưới mực nước trên tất cả các ngày.

Ràng buộc

  • 1≤n≤105
  • 0≤mi<i

Ví dụ

Input Output Giải thích
5
0 1 1 2 2
0 Mỗi ngày mực nước đều cao hơn ngày trước nên vạch mới luôn nằm trên cùng, không ngày nào có vạch nằm dưới mực nước.
5
0 1 2 1 2
1 Ngày 4 mực nước tụt xuống dưới một vạch đã có, cho d4=1; các ngày còn lại đều bằng 0.
6
0 1 0 3 0 2
6 Ngày 3 bắt buộc phải sinh thêm một vạch mới, nếu không ngày 4 không thể có 3 vạch phía trên. Số vạch dưới nước theo từng ngày là 0+0+2+0+3+1=6.

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