
代码实现
cpp
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N = 1e6 + 10;
int n, m,z;
int a[N];
int check(int mid)
{
int cnt = 0;
for (int i = 1; i <= n; i++)
{
int x = a[i] - mid;
if (x > 0) cnt += x;
}
return cnt;
}
signed main()
{
cin >> n >> m;
for (int i = 1; i <= n; i++)
{
int x; cin >> x;
a[i] = x;
z = max(z, x);
}
int l = 1, r = z, mid;
while(l < r)
{
mid = (l + r + 1) >> 1;
if(check(mid) >= m) l = mid;
else r = mid - 1;
}
cout << l << endl;
return 0;
}