这个代码为什么会TLE?
#include <bits/stdc++.h>
using namespace std;
#define int long long
int a[200010], n, m;
bool check(int k) {
int ans = 0;
for (int i = 1; i <= n; i++) {
ans += min(a[i], k);
if (ans > m)
return false;
}
return true;
}
signed main() {
ios::sync_with_stdio(false);
ios_base::sync_with_stdio(false);
cin.tie(0), cout.tie(0);
cin >> n >> m;
int sum = 0;
for (int i = 1; i <= n; i++)
cin >> a[i], sum += a[i];
if (sum <= m) {
cout << "infinite";
return 0;
}
int l = 1, r = 2e14;
while (l < r) {
int mid = l + r >> 1;
if (check(mid))
l = mid;
else
r = mid - 1;
}
cout << l;
return 0;
}