Băng dán

Đề bài

Mô tả

Bạn có một thanh gỗ dài gồm m đoạn được đánh số từ 1 đến m, mỗi đoạn dài 1 cm. Một số đoạn bị hỏng và cần được dán lại.

Bạn có một cuộn băng dán dài vô hạn. Bạn cắt ra vài miếng băng và dùng chúng để phủ kín tất cả các đoạn bị hỏng. Cụ thể, một miếng băng có độ dài nguyên t đặt tại vị trí s sẽ phủ các đoạn s,s+1,,s+t1.

Bạn được phép phủ cả những đoạn không hỏng, và các miếng băng có thể chồng lên nhau. Bạn được dùng tối đa k miếng băng liên tục để phủ hết mọi đoạn hỏng. Hãy tìm tổng độ dài nhỏ nhất của các miếng băng.

Dữ liệu vào

  • Dòng đầu chứa ba số nguyên n, mk: số đoạn hỏng, độ dài thanh gỗ và số miếng băng tối đa được dùng.
  • Dòng thứ hai chứa n số nguyên b1,b2,,bn: vị trí các đoạn bị hỏng, cho theo thứ tự tăng dần (b1<b2<<bn).

Dữ liệu ra

In ra một số nguyên: tổng độ dài nhỏ nhất của các miếng băng.

Ràng buộc

  • 1n105
  • nm109
  • 1kn
  • 1b1<b2<<bnm

Ví dụ

Input Output Giải thích
4 100 2
20 30 75 80
17 Dùng một miếng dài 11 phủ các đoạn hỏng 20 và 30, một miếng dài 6 phủ 75 và 80, tổng độ dài 17.
5 100 3
1 2 4 60 87
6 Dùng một miếng dài 4 phủ các đoạn hỏng 1, 2, 4, và hai miếng dài 1 phủ 60 và 87.

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.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0