二分答案解题
2026-07-30 15:04:13
发布于:广东
5阅读
0回复
0点赞
#include <bits/stdc++.h>
using namespace std;
long long n,a[1000010],m,x,l,r,k,s,y;
int main(){
cin >> n >> k;
for(int i = 1;i <= n;i++){
cin >> a[i];
if(a[i] > y){
y = a[i];
}
}
l = 1,r = y;
sort(a + 1,a + n + 1);
while(l <= r){
s = 0;
m = (l + r) / 2;
for(int i = 1;i <= n;i++){
if(a[i] > m){
s += a[i] - m;
}
}
if(s == k){
x = m;
//cout << m << " " << 1 << "\n";
break;
}else if(s > k){
x = m;
l = m + 1;
//cout << m << " " << 2 << "\n";
}else{
r = m - 1;
//cout << m << " " << 3 << "\n";
}
}
cout << x;
return 0;
}
这里空空如也







有帮助,赞一个