题意

有n种扑克牌,每种有ci个。还有m张王牌。可以代替其中任一张。最多可以造出几个套牌(每副牌只能用一次)。

solution

典型的二分答案,每副牌只能使用一次,所以限制使用的王牌数为 ,每种牌不够 张需要王牌补,计算使用的王牌数为图片说明判断是否满足条件即可。

Code

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n, m, a[105];

bool check(ll x) {
  ll cnt = min(m, x);
  for (ll i = 1; i <= n; i++) cnt -= max(x - a[i], 0LL);
  return cnt >= 0;
}

int main() {
  cin >> n >> m;
  for (int i = 1; i <= n; i++) cin >> a[i];
  ll l = 0, r = 1e9, mid;
  while (l + 1 < r) {
    mid = l + r >> 1;
    if (check(mid))
      l = mid;
    else
      r = mid;
  }
  cout << l << '\n';
  return 0;
}