48求调

P2440 木材加工

wuzhexu @ 2024-11-25 21:57:10

感谢大佬们的纠正……!

#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,k,s=INT_MAX;
int dis[100000010];
int ans=0;
int l,r;
bool check(int x){
    int cnt=0;
    for(int i=1;i<=n;i++){
        cnt+=dis[i]/x;
    }
    if(cnt>k) return 1;
    return 0;
}
int find(int l,int r){
    if(l>r) return ans;
    int mid=l+(r-l)/2;
    if(check(mid)){
        ans=mid;
        return find(mid+1,r);
    }
    else{
        return find(l,mid-1);
    }
}
signed main(){
    cin>>n>>k;
    for(int i=1;i<=n;i++){
        cin>>dis[i];
        s=min(s,dis[i]);
    }
    int l=1;
    int r=s;
    cout<<find(l,r)<<endl;
    return 0;

}

|