Cod sursa(job #2282114)

Utilizator pasoi_stefanPasoi Stefan pasoi_stefan Data 13 noiembrie 2018 11:11:20
Problema Transport Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.65 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){
    if(x<lim) return n+1;
    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>0 && ras(ans-step)<=k)
            ans-=step;
        step>>=1;
    }
    cout<<ans;
}