Cod sursa(job #817142)

Utilizator gabi.samerGabi Samer gabi.samer Data 17 noiembrie 2012 13:33:34
Problema Transport Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include<stdio.h>
int main(){
    int n,m,k,s,l1=0,l2=0,i,nr,v[16001],max=0,cant;
    freopen("transport.in","r",stdin);
    freopen("transport.out","w",stdout);
    scanf("%d%d",&n,&k);
    for(i=1;i<=n;i++){
        scanf("%d",&v[i]);
        if(v[i]>max)
            max=v[i];
        l2+=v[i];
    }
    l1=max;
    while(l1<=l2){
        cant=m;
        m=(l1+l2)/2;
        nr=1;
        s=0;
        for(i=1;i<=n;i++){
            s=s+v[i];
            if(s>m){
                nr++;
                s=v[i];
            }
        }
        if(nr<=k&&max<m){
            l2=m-1;
            cant=m;}
        else
            l1=m+1;
    }
    if(m<cant)
        printf("%d",cant);
    else
        printf("%d",m);
    return 0;
}