trang chủ / bài tập / polpatrol

Tuần tra cảnh sát

Đề bài

Mô tả

Trên trục số có n tên tội phạm đứng cố định tại các vị trí nguyên cho trước. Bạn cần chọn một vị trí nguyên P trên trục số để xây đồn cảnh sát.

Đồn cảnh sát có một xe tuần tra, mỗi chuyến chở được tối đa m tên tội phạm. Mỗi chuyến: xuất phát từ P, đi đến chỗ tội phạm, bắt giữ, rồi quay lại P để giam. Tội phạm đứng im chờ bị bắt. Nếu trên đường đi nhặt được tội phạm đứng trùng vị trí P thì coi như bắt được ngay (không tốn quãng đường).

Hãy tìm vị trí P sao cho tổng quãng đường xe tuần tra phải đi để bắt hết tất cả tội phạm là nhỏ nhất, và in ra giá trị đó.

Dữ liệu vào

  • Dòng 1: hai số nguyên nm.
  • Dòng 2: n số nguyên là vị trí của các tội phạm trên trục số, cho theo thứ tự không giảm. Có thể có nhiều tội phạm cùng một vị trí.

Dữ liệu ra

Một số nguyên duy nhất: tổng quãng đường nhỏ nhất.

Ràng buộc

  • 1n,m106
  • Giá trị tuyệt đối của các vị trí không vượt quá 109.

Ví dụ

Input Output Giải thích
3 6
1 2 3
4 Đặt đồn tại P=2. Một chuyến chở được cả 3 tên (vì m=6): đi đến 3 rồi quay về 2 tốn 2, rồi đi đến 1 rồi về 2 tốn 2. Tổng =4.
5 5
-7 -6 -3 -1 1
16 Đặt đồn tại P=3. Một chuyến bắt 2 tên bên trái: đi đến 7 rồi về tốn 8. Một chuyến bắt 2 tên bên phải: đi đến 1 rồi về tốn 8. Tổng =16.
1 369
0
0 Đặt đồn ngay tại 0, tội phạm bị bắt tức thì.
11 2
-375 -108 1336 1453 1598 1892 2804 3732 4291 4588 4822
18716 Đặt đồn tại P=1892 (trung vị), xe chở mỗi chuyến 2 tên, quy hoạch các chuyến tối ưu cho hai phía.

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