Cod sursa(job #1666356)

Utilizator teodoradobrotaTeodora Dobrota teodoradobrota Data 27 martie 2016 23:03:29
Problema Transport Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <cstdio>
using namespace std;
int s[16001];
int main(){
    freopen("transport.in","r",stdin);
    freopen("transport.out","w",stdout);
    int i,n,d,l1,l2,m,k,cap,min=-1;
       scanf("%d%d",&n,&d);
    for(i=1;i<=n;i++){
        scanf("%d",&s[i]);
        if(s[i]>=min)
            min=s[i];
    }
    l1=min;
    l2=256000000;
    while(l1<=l2){
        m=(l1+l2)/2;
        cap=0;
        k=1;
        for(i=1;i<=n;i++){
            if(cap+s[i]<=m){
                cap=cap+s[i];
            }
            else {
                k++;
                cap=s[i];
            }
       }
       if(k<=d){
            l2=m-1;
       }
       else{
            l1=m+1;
       }

    }
    printf("%d",m);
}