나무 자르기
한 줄로 늘어선 나무 N그루를 절단기로 벌목해 목재를 최소 M미터 얻으려 한다.
절단기는 높이 H를 지정하면 톱날이 땅에서 H미터 높이로 올라가, 줄에 있는 모든 나무에서 H보다 위로 솟은 부분만 잘라낸다. 높이가 H 이하인 나무는 잘리지 않는다. 잘려 나간 윗부분들이 가져갈 수 있는 목재가 된다.
예를 들어 나무 높이가 20, 15, 10, 17이고 H = 15로 지정하면, 절단 후 높이는 15, 15, 10, 15가 되고 잘려 나온 목재는 5미터와 2미터, 합쳐서 7미터다. H로 지정할 수 있는 값은 0 또는 양의 정수다.
목재를 필요 이상으로 낭비하고 싶지는 않다. 적어도 M미터의 목재를 얻을 수 있는 H의 최댓값을 구하는 프로그램을 작성하라.
입력
첫째 줄에 나무의 수 N(1 ≤ N ≤ 1,000,000)과 필요한 목재의 길이 M(1 ≤ M ≤ 2,000,000,000)이 주어진다.
둘째 줄에 나무 N그루의 높이가 공백으로 구분되어 주어진다. 각 높이는 0 이상 1,000,000,000 이하의 정수다. 나무 높이의 총합은 항상 M 이상이므로 필요한 목재는 반드시 얻을 수 있다.
출력
적어도 M미터의 목재를 얻기 위해 절단기에 설정할 수 있는 높이의 최댓값을 출력한다.
예제 입력 1
4 7
20 15 10 17
예제 출력 1
15
예제 입력 2
5 20
4 42 40 26 46
예제 출력 2
36