Bài 4: Chia cặp (TS10 SQRT thi thử lần 4 - 2026)

Xem PDF



Tác giả:
Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 2300 (p) Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Cho dãy \(a\) gồm \(n\) phần tử được đánh số thứ tự từ \(1\) đến \(n\). Giá trị của phần tử thứ \(i\)\(a_i\).

Một cách chọn các cặp phần tử không giao nhau là một cách chọn các cặp sao cho không có phần tử nào thuộc nhiều hơn một cặp.

Yêu cầu: Bạn cần tìm ra cách chọn ra \(k\) cặp phần tử không giao nhau sao cho tổng chênh lệch của giá trị hai phần tử trong một cặp là bé nhất.

Input

  • Dòng đầu tiên chứa hai số nguyên dương \(n\)\(k\) — số lượng phần tử của dãy \(a\) và số lượng cặp cần phải chọn (\(2 \cdot k \leq n \leq 10^5\)).
  • Dòng thứ hai chứa giá trị của các phần tử trong dãy \(a\): \(a_1, a_2, \dots, a_n\) (\(1 \leq a_1, a_2, \dots, a_n \leq 10^9\)).

Output

  • Gồm một dòng duy nhất chứa kết quả bài toán: tổng chênh lệch giá trị bé nhất của \(k\) cặp phần tử.

Example

Test 1

Input
5 2
1 2 3 4 5
Output
2
Note

Chọn hai cặp phần tử là \((1, 2)\)\((4, 5)\). Tổng chênh lệch là: \(|1 - 2| + |4 - 5| = 2\).

Test 2

Input
5 1
1 3 5 7 9
Output
2
Note

Chọn một cặp phần tử là \((3, 5)\). Tổng chênh lệch là \(|3 - 5| = 2\).

Scoring

  • \(30\%\) số điểm của bài có dữ liệu thỏa mãn: \(n \leq 100\).
  • \(30\%\) số điểm của bài có dữ liệu thỏa mãn: \(n \leq 1000\).
  • \(30\%\) số điểm của bài có dữ liệu thỏa mãn: \(a_1, a_2, \dots, a_n \leq 100\).
  • \(10\%\) số điểm còn lại của bài không có ràng buộc gì thêm.

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.

Kỳ thi: