题目链接

扑克牌

题目思路

二分,数据比较大的时候r设的大一些,不然易wa

代码实现

#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int Max=1e5;
ll n,m,c[Max];
bool check(ll x)
{
    ll res=0;
    for(int i=1;i<=n;i++)
    {
        res+=(max(c[i],x)-c[i]);
    }
    return res<=min(m,x);
}
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);cout.tie(0);
    cin>>n>>m;
    for(int i=1;i<=n;i++)
        cin>>c[i];
    ll l=0,r=1e9;
    while(l<r)
    {
        ll mid=(l+r+1)>>1;
        if(check(mid))
        {
            l=mid;
        }
        else r=mid-1;
    }
    cout<<l<<endl;
    return 0;
}