Cod sursa(job #815586)

Utilizator tepatelStefan Enescu tepatel Data 17 noiembrie 2012 11:13:42
Problema Transport Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.58 kb
#include<stdio.h>
int v[16001];
int main ()
{freopen ("transport.in","r",stdin);
freopen ("transport.out","w",stdout);
int i,j,a=0,b=0,n,k;
scanf("%d%d",&n,&k);
for(i=1;i<=n;i++)
    {scanf("%d",&v[i]);
    if(v[i]>a)
        a=v[i];
    b+=v[i];
    }
a--;
b++;
int m,nr,s;
while(a<=b)
    {m=(a+b)/2;
    nr=0;
    for(i=1;i<=n;i++)
        {s=0;
        while(s+v[i]<=m&&v[i]!=0)
            {s+=v[i];
            i++;
            }
        nr++;
        i--;
        }
    if(nr<=k)
        b=m-1;
    else
        a=m+1;
    }
printf("%d",a);
return 0;
}