Cod sursa(job #821863)

Utilizator ade_tomiEnache Adelina ade_tomi Data 22 noiembrie 2012 18:54:05
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include<stdio.h>
int v[16000],n,k,i,l1,l2,m,t,k1,max,s;
int main ()
{
    freopen("transport.in", "r", stdin);
    freopen("transport.out", "w", stdout);
	max=-1;
    scanf("%d%d", &n,&k);
    for(i=0;i<n;i++)
    {
        scanf("%d", &v[i]);
        s+=v[i];
        if(v[i]>max) max=v[i];
    }
    l1=max;
   l2=s;
    while(l1<=l2)
    {
        m=(l1+l2)/2;
        t=0;
        s=0;
        for(i=0;i<n;i++)
        {
            if(s+v[i]<=m) s+=v[i];
                else
                {
                    t++;
                    s=v[i];
                }
        }
        if(s) t++;
        if(t<=k)
        {
            l2=m-1;
            k1=m;
        }
            else l1=m+1;
    }
    if(t<=k) printf("%d", m);
        else printf("%d", k1);
    return 0;
}