Cod sursa(job #2282118)

Utilizator pasoi_stefanPasoi Stefan pasoi_stefan Data 13 noiembrie 2018 11:15:24
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.63 kb
#include<fstream>
#include<algorithm>
using namespace std;
ifstream cin("transport.in");
ofstream cout("transport.out");
int n,k,ans,lim,s[20005];
int ras(int x){
    int nr=0;
    for(int i=1;i<=n;){
        int b=x;
        while(i<=n && b>=s[i])
            b-=s[i++];
        ++nr;
    }
    return nr;
}
int main(){
    cin>>n>>k;
    for(int i=1;i<=n;i++){
        cin>>s[i];
        if(lim<s[i]) lim=s[i];
        ans+=s[i];
    }
    int step=1;
    while(step<=ans) step<<=1;
    while(step){
        if(ans-step>=lim && ras(ans-step)<=k)
            ans-=step;
        step>>=1;
    }
    cout<<ans;
}