题解 | [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")
查看24道真题和解析
