https://www.acmicpc.net/problem/2805
#include <iostream>
#include <vector>
using namespace std;
long long check(vector<long long> v, long long high)
{
	long long total = 0;
	for (int i = 0; i < v.size(); i++)
	{
		if (v[i] - high > 0)
			total += v[i] - high;
	}
	return total;
}
int main(void)
{
	cin.tie(0);
	cout.tie(0);
	ios_base::sync_with_stdio(0);
	long long N, M, tmp;
	vector<long long> v;
	long long low = 0, high = 0;
	long long answer = 0;
	cin >> N >> M;
	for (int i = 0; i < N; i++)
	{
		cin >> tmp;
		v.push_back(tmp);
		high = max(high, tmp);
	}
	while (low <= high)
	{
		long long mid = (low + high) / 2;
		if (check(v, mid) >= M)
		{
			answer = max(answer, mid);
			low = mid + 1;
		}
		else
		{
			high = mid - 1;
		}
	}
	cout << answer;
	return 0;
}