Cod sursa(job #816649)

Utilizator irinaneaguIrina Neagu irinaneagu Data 17 noiembrie 2012 12:57:00
Problema Transport Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.59 kb
#include<stdio.h>
int v[16001];
int main ()
{freopen ("transport.in","r",stdin);
freopen ("transport.out","w",stdout);
int nr,i,capmin=0,capmax=0,n,k,s=0,l1,l2,m;
scanf("%d%d",&n,&k);
for(i=1;i<=n;i++){
    scanf("%d",&v[i]);
    if(v[i]>capmin)
        capmin=v[i];
    capmax+=v[i];}
l1=capmin-1;
l2=capmax+1;
while(l1<=l2){
    s=0;
    m=(l1+l2)/2;
    nr=1;
    for(i=1;i<=n;i++){
        if(s+v[i]<=m)
            s+=v[i];
        else{
            nr++;
            s=v[i];}
    }
    if(nr<=k)
        l2=m-1;
    else
        l1=m+1;

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