Maxdif

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: 1600 (p) Thời gian: 1.0s Bộ nhớ: 1G Input: bàn phím Output: màn hình

Cho dãy số nguyên \(a_1, a_2, \dots, a_n\) và số nguyên dương \(k\). Thực hiện phép xóa \(k\) phần tử, sau đó sắp xếp các phần tử còn lại theo thứ tự tăng dần. Gọi \(W\) là hiệu lớn nhất giữa hai phần tử liên tiếp trong dãy sau khi đã sắp xếp.

Yêu cầu

Tìm cách xóa \(k\) phần tử sao cho \(W\) nhận giá trị nhỏ nhất.

Input

  • Dòng đầu chứa hai số nguyên dương \(n, k\) (\(k \le n - 2\)).
  • Dòng thứ hai chứa \(n\) số nguyên \(a_1, a_2, \dots, a_n\) (\(|a_i| \le 10^9\)).

Output

  • Gồm một dòng duy nhất chứa giá trị \(W\) nhỏ nhất tìm được.

Example

Test 1

Input
5 1
4 1 2 3 9
Output
1
Note

Xóa phần tử có giá trị \(9\). Dãy còn lại là \(\{4, 1, 2, 3\}\).
Sắp xếp lại ta được \(\{1, 2, 3, 4\}\).
Các hiệu liên tiếp là: \(2-1=1, 3-2=1, 4-3=1\).
Hiệu lớn nhất \(W = 1\). Đây là giá trị nhỏ nhất có thể đạt được.

Scoring

  • Subtask \(1\) (\(30\%\) số điểm): \(n \le 100\).
  • Subtask \(2\) (\(30\%\) số điểm): \(n \le 2000\).
  • Subtask \(3\) (\(40\%\) số điểm): \(n \le 10^5\).

Nguồn: Thầy Đông '1920

Bình luận

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

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