#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 2e5;
ll n, k, mmax;
ll a[N];
int solve(ll mid){
ll s = 0;
for(int i = 0; i <= n; i++){
if(a[i] / mid){
s += (a[i] / mid);
}
}
return s >= k;
}
int main(){
cin >> n >> k;
for(int i = 1; i <= n; i++){
cin >> a[i];
mmax += a[i];
}
sort(a + 1, a + n + 1);
if(k > mmax){
cout << "0" << endl;
return 0;
}
ll l = 0, r = 1e8, mid;
while(l < r){
mid = 1 + l + (r - l) / 2;
if(solve(mid)){
l = mid;
}
else{
r = mid - 1;
}
}
cout << l << endl;
return 0;
}
如果我换成mid = l + (r - l) / 2,那么代码该怎么变?