题解 | [CQOI2010]扑克牌

[CQOI2010]扑克牌

https://www.nowcoder.com/practice/b77ff162bbab446993913fd684489cde

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

int n,m;
const int N=53;
int a[N];

bool f(ll x){
    ll s=0;
    for(int i=0;i<n;i++){
        s+=max(0LL,x-a[i]);
        if(s >m || s>x) return false;
    }
    return s<=m;
}
int main() {
    cin>>n>>m;
    for(int i=0;i<n;i++){
        cin>>a[i];
    }

    ll l=0,r=1e9;
    ll ans=0;
    while(l<=r){
        ll mid=l+(r-l)/2;
        if(f(mid)){
            ans=mid;
            l=mid+1;
        } else{
            r=mid-1;
        }
    }
    cout<<ans;
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

肥肠椒绿:双非本可不就犯天条了,双非本就应该打入无间地狱
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务