题解
2026-02-09 14:58:47
发布于:北京
12阅读
0回复
0点赞
这题是非常经典的一道二分题,仅需要判断a[i]和写两个自定义函数即可AC
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e6+10;
int a[N];
int n,k;
int check(int x){
int sum=0;
for(int i=1;i<=n;i++){
if(a[i]>x){
sum+=a[i]-x;
}
}
return sum>=k;
}
int upper_answer(int l,int r){
int ans=0;
while(l<=r){
int mid=(l+r)/2;
if(check(mid)){
ans=mid;
l=mid+1;
}else{
r=mid-1;
}
}
return ans;
}
signed main(){
cin>>n>>k;
int maxx=0;
for(int i=1;i<=n;i++){
cin>>a[i];
maxx=max(maxx,a[i]);
}
int l=1,r=maxx;
cout<<upper_answer(l,r)<<endl;
return 0;
}
全部评论 1

2026-02-09 来自 北京
0












有帮助,赞一个