蒟蒻20分求助
查看原帖
蒟蒻20分求助
1183011
yerosius楼主2024/5/4 13:30
#include<bits/stdc++.h>

using namespace std;
using ll=long long;
ll n,k,s,l,m,r,ans;
vector<ll>v;
bool check(ll mid){
    ll temp=0,num=0;
    for(int i=0;i<n;i++){
        if(temp+v[i]<=mid){
            temp+=v[i];
        }else{
            temp=v[i];
            num++;
        }
    }
    return num>=k;
}
void solve(){
    l=*max_element(v.begin(),v.end()),r=s;
    while(l<=r){
        m=l+r>>1;
        if(check(m)){
            ans=m;
            l=m+1;
        }else{
            r=m-1;
        }
    }
    cout<<ans<<endl;
}
int main(){
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    cin>>n>>k;
    v.resize(n);
    for(int i=0;i<n;i++){
        cin>>v[i];
        s+=v[i];
    }
    sort(v.begin(),v.end());
    solve();
    return 0;
}
2024/5/4 13:30
加载中...