CSES - Stick Difference | Hiệu Độ Dài Que

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

Bạn được cho \(n\) que có độ dài \(a_1,a_2,\dots,a_n\). Bạn phải thực hiện đúng \(k\) nhát cắt lên các que, sao cho số lượng que trở thành \(n + k\).

Sau khi cắt, hiệu giữa độ dài của que dài nhất và que ngắn nhất cần nhỏ nhất có thể. Nhiệm vụ của bạn là tính hiệu nhỏ nhất có thể cho mọi số lượng nhát cắt \(k=1,2,\dots,m\).

Các nhát cắt phải giữ cho độ dài của các que là số nguyên dương. Bạn có thể giả sử rằng các que có thể được cắt \(m\) lần.

Dữ liệu vào

Dòng đầu tiên chứa hai số nguyên \(n,m\): số lượng que và số nhát cắt tối đa.

Dòng thứ hai chứa \(n\) số nguyên \(a_1,a_2,\dots,a_n\): độ dài của các que.

Dữ liệu ra

In ra một dòng gồm \(m\) số nguyên: hiệu nhỏ nhất có thể nếu thực hiện đúng \(k=1,2,\dots,m\) nhát cắt.

Constraints

  • \(1 \le n \le 10^5\)

  • \(1 \le m \le 2 \cdot 10^5\)

  • \(1 \le a_i \le 10^9\)

Example

Test 1

Input
3 3
7 3 2
Output
2 1 2

Explanation

Khi \(k=1\), bạn có thể cắt que thứ nhất thành hai que có độ dài \(3\)\(4\). Sau đó, độ dài các que là \([3,4,3,2]\) và hiệu lớn nhất là \(2\).

Bình luận

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

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