Point: 100.0
Time limit: 1.0s
Memory limit: 128 M
Input: stdin
Output: stdout
Author:  
Problem type
Ngôn ngữ cho phép
C#, C++

Cho \(N\) khúc gỗ có độ dài \(A_1, A_2, ...,A_N\). Ta có thể cắt những khúc gỗ này tối đa \(K\) lần tất cả. Khi một khúc gỗ độ dài \(L\) bị cắt ở điểm cách một đầu của khúc gỗ khoảng cách là \(t\) \((0<t<L)\) thì nó sẽ trở thành \(2\) khúc gỗ có độ dài \(t\)\(L-t.\)

Tìm độ dài ngắn nhất có thể của khúc gỗ dài nhất sau nhiều nhất \(K\) lần cắt. (In ra kết quả sau khi làm tròn lên thành số nguyên)

Đầu vào

  • Dòng đầu chứa \(2\) số nguyên \(N\)\(K\ (1 \le N \le 2 \times 10^5, 0 \le K \le 10^9)\)
  • Dòng thứ \(2\) chứa \(N\) số nguyên \(A_i\ (1 \le A_i \le 10^9)\)

Đầu ra

In ra số nguyên thể hiện kết quả.

Ví dụ

INPUT OUTPUT
2 3
7 9
4

Giải thích

  • Đầu tiên, cắt khúc gỗ độ dài \(7\) thành \(2\) khúc gỗ độ dài \(3.5\)\(3.5\)
  • Tiếp theo, cắt khúc gỗ độ dài \(9\) thành \(2\) khúc gỗ độ dài \(3\)\(6\)
  • Cuối cùng, cắt khúc gỗ độ dài \(6\) thành \(2\) khúc gỗ độ dài \(3\)\(3\) Trong trường hợp này, độ dài dài nhất sẽ là 3.5 và là kết quả nhỏ nhất có thể. Sau khi làm tròn lên thành số nguyên, kết quả là 4.