Cod sursa(job #1829000)

Utilizator CleliaClelia Maria Dobrescu Clelia Data 14 decembrie 2016 10:42:49
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <cstdio>
int a[16001];
int main (){
    freopen ("transport.in","r",stdin);
    freopen ("transport.out","w",stdout);
    int l1=0,l2=0,n,i,m,s,nrs,k,x;
    scanf ("%d %d",&n,&k);
    for (i=1;i<=n;i++){
        scanf ("%d",&a[i]);
        if (l1<a[i])
            l1=a[i];
        l2+=a[i];
    }
    while (l1<=l2){
        m=(l1+l2)/2;
        s=nrs=0;
        for (i=1;i<=n;i++){
            s+=a[i];
            if (s>m){
                nrs++;
                s=a[i];
            }
        }
        nrs++;
        if (nrs<=k){
            x=m;
            l2=m-1;
        }
        else
            l1=m+1;
    }
    printf ("%d",x);
    return 0;
}