虽然AC了但是我还有疑问!
查看原帖
虽然AC了但是我还有疑问!
823836
cloudsRise楼主2022/11/16 21:38
#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,那么代码该怎么变?

2022/11/16 21:38
加载中...