trang chủ / đề bài / thhv19_cpt_10_b

Dãy số không giảm

Đề bài

Mô tả

Cho dãy số nguyên gồm N phần tử a1,a2,…,aN. Bạn được thực hiện nhiều thao tác, mỗi thao tác cho phép tăng hoặc giảm 1 phần tử của dãy đi 1 đơn vị. Hãy thực hiện một số ít nhất các thao tác sao cho dãy số ban đầu trở thành một dãy số không giảm. Một dãy số gọi là không giảm khi một phần tử bất kì của dãy không nhỏ hơn phần tử đứng liền trước.

Các phần tử sau khi biến đổi có thể nhận giá trị nguyên bất kỳ (kể cả số âm).

Yêu cầu: Tìm số thao tác ít nhất cần thực hiện để dãy số trở thành dãy không giảm.

Dữ liệu vào

  • Dòng đầu tiên gồm một số nguyên dương N.
  • Dòng thứ hai gồm N số nguyên a1,a2,…,aN (|ai|≤109).

Dữ liệu ra

Gồm một số nguyên là số thao tác ít nhất cần thực hiện.

Ràng buộc

  • 1≤N≤5000.
  • |ai|≤109.

Subtasks

  • 30% số test: N≤5000, ai∈{0;1}.
  • 30% số test khác: N≤500.
  • 40% số test còn lại: N≤5000.

Ví dụ

Input Output Giải thích
5
2 1 1 1 1
1 Giảm a1 đi 1 đơn vị, dãy thành 1,1,1,1,1.
5
3 2 -1 2 11
4 Một cách tối ưu: dãy thành 2,2,2,2,11 với 1+0+3+0+0=4 thao tác.
3
1000000000 -1000000000 1000000000
2000000000 Ví dụ bổ sung (không có trong đề gốc). Dãy thành −109,−109,109; kết quả vượt quá phạm vi số nguyên 32 bit có dấu.

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