Hoán vị cực tiểu

Đề bài

Mô tả

Cho mảng A gồm n số nguyên, đánh chỉ số từ 1 đến n, và một số nguyên dương k.

Bạn được phép hoán vị các phần tử của mảng một cách tùy ý (kể cả giữ nguyên thứ tự ban đầu). Hãy tìm cách hoán vị sao cho giá trị

∑i=1n−k|A[i]−A[i+k]|

đạt nhỏ nhất có thể, và in ra giá trị nhỏ nhất đó.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên n,k.
  • Dòng thứ hai chứa n số nguyên A[1],A[2],…,A[n].

Dữ liệu ra

In ra một số nguyên duy nhất: giá trị nhỏ nhất của tổng nêu trên.

Ràng buộc

  • 2≤n≤3·105
  • 1≤k≤min(5000,n−1)
  • −109≤A[i]≤109

Ví dụ

Input Output Giải thích
3 2
1 2 4
1 Một hoán vị tối ưu là 1 4 2: tổng bằng |1 - 2| = 1.
5 2
3 -5 3 -5 3
0 Thứ tự ban đầu đã tối ưu: |3-3| + |-5-(-5)| + |3-3| = 0.
6 3
4 3 4 3 2 5
3 Một hoán vị tối ưu là 2 3 4 4 3 5: |2-4| + |3-3| + |4-5| = 3.

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