如题,和第三篇题解几乎是一样的,但只有11分
#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;
int a, b, n, ans, maxw, lft, rgt, w[500005];
bool judge(int x)
{
int sum = 0;
for (int i = 1; i <= n; i++)
{
if (w[i] > x)
sum += ceil(1.0 * (w[i] - a * x) / b);
if (sum > x)
return false;
}
return true;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin >> n >> a >> b;
for (int i = 1; i <= n; i++)
{
cin >> w[i];
maxw = max(maxw, w[i]);
}
lft = 1, rgt = maxw;
while (lft <= rgt)
{
int mid = (lft + rgt) >> 1;
if (judge(mid))
{
ans = mid;
rgt = mid - 1;
}
else
lft = mid + 1;
}
cout << ans << "\n";
return 0;
}