const input = require("fs")
.readFileSync("./input.txt")
.toString()
.trim()
.split("\n");
const [N, height] = input.shift().split(" ").map(Number);
const tree = input[0]
.split(" ")
.map(Number)
.sort((a, b) => a - b);
let start = 0;
let end = tree[tree.length - 1];
let answer = Number.MIN_SAFE_INTEGER;
while(start <= end) {
let mid = Math.floor((start + end) / 2)
let sum = 0;
for(let x of tree) {
if(x > mid) sum += x-mid;
}
if(sum >= height) {
if(mid > answer) answer = mid;
start = mid+1;
} else {
end = mid - 1;
}
}
console.log(answer);
// binarySearch
감이 안와서 어떻게 접근해야할 지 모르겠다가. 이진탐색으로 푸는 문제라는걸 검색하고, 이진탐색의 알고리즘을 확인 후 풀 수 있었다.