Cod sursa(job #816436)

Utilizator gabi.samerGabi Samer gabi.samer Data 17 noiembrie 2012 12:42:33
Problema Transport Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include<stdio.h>
int main(){
    int n,m,k,s,l1=0,l2=0,i,nr,v[16001],max=0;
    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-1;
    l2++;
    while(l1<=l2){
        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)
            l2=m-1;
        else
            l1=m+1;
        if(m<max){
            l1=l2+15;
            m++;}
    }
    printf("%d",m);
    return 0;
}