나무 자르기


문제 정보
check포인트 : 1 (부분 점수)
schedule시간 제한 : 1.0s
storage메모리 제한 : 256M
edit_square출제자:
 
답안 제출

한 줄로 늘어선 나무 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

댓글

현재 작성된 댓글이 없습니다.