Gửi bài giải

Điểm: 100,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C++, Pascal, Python, Rust

Cho dãy ~A~ gồm ~N~ phần tử nguyên ~A_1, A_2, \ldots, A_N~ và số nguyên dương ~K~. Khi thực hiện thao tác xóa ~K~ phần tử bất kì khỏi dãy ~A~ ta thu được dãy ~B~ gồm các phần tử còn lại của dãy ~A~. Gọi ~M~ là hiệu lớn nhất giữa hai số bất kỳ trong dãy ~B~, ~m~ là hiệu không âm nhỏ nhất giữa hai số bất kỳ trong dãy ~B~.

Yêu cầu: Tìm giá trị nhỏ nhất của ~|M| + |m|~.

Input

Đọc từ tệp văn bản XOASO.INP gồm hai dòng:

  • Dòng 1: Ghi hai số nguyên dương ~N~ và ~K~ (~3 \le N \le 10^6~; ~1 \le K \le N - 2~);
  • Dòng 2: Ghi ~N~ số nguyên ~A_1, A_2, \ldots, A_N~ (~|A_i| \le 5 \times 10^6~; ~i = 1, 2, \ldots, N~).

Output

Ghi ra tệp văn bản XOASO.OUT một giá trị duy nhất là kết quả của bài toán.

Sample Input 1

5 2
-3 -2 3 8 6

Sample Output 1

7

Giải thích: Có thể xóa hai số: ~-3, -2~ → Dãy ~B = (3, 8, 6)~ → ~M = 5~; ~m = 2~ → Kết quả bằng ~5 + 2 = 7~.

Sample Input 2

6 2
-5 8 10 1 13 -1

Sample Output 2

13

Giải thích: Có thể xóa hai số: ~-5, 13~ → Dãy ~B = (8, 10, 1, -1)~ → ~M = 11~; ~m = 2~ → Kết quả bằng ~11 + 2 = 13~.

Giới hạn

  • ~3 \le N \le 10^6~; ~1 \le K \le N - 2~;
  • ~|A_i| \le 5 \times 10^6~.

Subtask:

  • Subtask 1: Có 30% số test ứng với 30% số điểm có ~N \le 20~;
  • Subtask 2: Có 40% số test ứng với 40% số điểm có ~N \le 10^3~;
  • Subtask 3: Có 30% số test ứng với 30% số điểm có ~N \le 10^6~.

Đang tải...