#pragma warning(disable:4946)
#pragma warning(disable:6385)
#include <cstdio>
#include <algorithm>
#define size 1000001
using namespace std;
long long N, M;
long long tree[size];
long long cut = 0;
long long res = 0;
int main() {
scanf("%lld", &N);
scanf("%lld", &M);
for (int i = 0; i < N; i++) {
scanf("%lld", &tree[i]);
}
sort(tree, tree + N);
long long start = 0;
long long end = tree[ N - 1];
while (start <= end) {
long long mid = (start + end) / 2;
long long sum = 0;
for (int i = 0; i < N; i++) {
if (tree[i] - mid > 0) {
sum += tree[i] - mid;
}
}
if (sum >= M) {
if (res<mid) {
res = mid;
}
start = mid + 1;
}
else {
end = mid - 1;
}
}
printf("%lld", res);
}
카테고리 없음