求问上界1e6为什么不行, 而要开到1e11
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int maxn = 5 * 1e5 + 5;
int n, t;
inline int read() {
int ret = 0, f = 1;char ch = getchar();
while (ch < '0' || ch > '9') {
if (ch == '-') f = -f;
ch = getchar();
}
while (ch >= '0' && ch <= '9') {
ret = ret * 10 + ch - '0';
ch = getchar();
}
return ret * f;
}
int a[maxn];
bool check(int x) {
int cnt = 0;
for (int i = 1;i <= n;i++) {
if (a[i] >= x) cnt += x;
else cnt += a[i];
}
return cnt >= x * t;
}
int main() {
n = read(), t = read();
for (int i = 1;i <= n;i++) {
a[i] = read();
}
int l = 0, r = 1e11 + 5, mid, ans;//WHY IS IT FUCKING 1e11 ???
while (l <= r) {
int mid = (l + r) >> 1;
if (check(mid)) l = mid + 1, ans = mid;
else r = mid - 1;
}
printf("%d\n", ans);
return 0;
}