trang chủ / đề bài / hcm_tst_22_b

Làm tròn

Đề bài

Mô tả

An đang xếp N món hàng lên băng chuyền để chờ đến lượt tính tiền trong siêu thị. Các món hàng đang được An sắp theo một thứ tự nhất định. Khi chờ đến lượt mình tính tiền thì An được biết siêu thị đang tính tiền làm tròn giá hàng chục đồng. Những đơn hàng có giá tiền ở hàng đơn vị bé hơn 5 thì làm tròn giá tiền xuống hàng chục gần nhất, đơn hàng có giá tiền ở hàng đơn vị lớn hơn hay bằng 5 thì làm tròn giá tiền lên hàng chục gần nhất. Ví dụ đơn hàng có giá 94 đồng thì giá tiền sẽ được làm tròn là 90 đồng, đơn hàng có giá tiền 95 đồng thì giá tiền sẽ được làm tròn là 100 đồng.

An có thể chia N món hàng trên thành nhiều nhóm bằng các thanh chia, mỗi nhóm sẽ được tính tiền riêng (giá của một đơn hàng là tổng giá các món hàng trong nhóm đó, và được làm tròn như trên). An chỉ có thể tìm được K thanh chia để chia thành (K+1) nhóm. Vì thời gian không còn nhiều nên An sẽ không sắp lại thứ tự các món hàng trên băng chuyền mà chỉ đặt các thanh chia ở giữa các món hàng để chia thành nhiều nhóm hàng.

Yêu cầu: Cho biết trước giá tiền của N món hàng và số lượng thanh chia K. Hãy viết một chương trình cho biết số tiền nhỏ nhất An phải trả để mua hết N món hàng và không được dùng quá K thanh chia.

Dữ liệu vào

  • Dòng đầu là hai số nguyên N và K lần lượt cho biết số món hàng An sẽ mua và số lượng thanh chia.
  • Dòng thứ hai chứa N số nguyên dương, mỗi số nhỏ hơn 105, là giá tiền của N món hàng, giá tiền được cho theo thứ tự của các món hàng trên băng chuyền.

Dữ liệu ra

In ra một số nguyên là số tiền nhỏ nhất An phải trả để mua hết N món hàng và không được dùng quá K thanh chia.

Ràng buộc

  • 1≤N≤2000, 1≤K≤200.
  • Giá mỗi món hàng là số nguyên dương nhỏ hơn 105.

Subtasks

  • Subtask 1 (20% số điểm): 1≤N≤100, 1≤K≤20.
  • Subtask 2 (30% số điểm): 1≤N≤1000, 1≤K≤20.
  • Subtask 3 (50% số điểm): 1≤N≤2000, 1≤K≤200.

Ví dụ

Input Output Giải thích
8 2
1 2 3 4 5 6 7 8
30 Một cách đặt các thanh chia để tối thiểu số tiền phải trả: 1 2 | 3 4 5 6 7 8. Nhóm thứ nhất có tổng 3, làm tròn thành 0; nhóm thứ hai có tổng 33, làm tròn thành 30.
6 2
7 3 4 5 2 8
30 Có thể không cần đặt thanh chia để tối thiểu số tiền phải trả: tổng 29 được làm tròn thành 30.

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