Cod sursa(job #883721)

Utilizator iuli1505Parasca Iuliana iuli1505 Data 20 februarie 2013 12:07:22
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.62 kb
#include<cstdio>
#define nmax 16005
using namespace std;
int i,n,k,v[nmax],l,r,s,mid,aux,nr;
int main()
{
    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]>l)l=v[i];r+=v[i];}
    for(;l<=r;)
    {
        mid=(l+r)/2;
        s=0;
        nr=0;
        for(i=1;i<=n;++i)
            if(v[i]+s<=mid)s+=v[i];
            else{nr++;s=v[i];}
        if(s)nr++;
        if(nr<=k){aux=mid;r=mid-1;}
        else l=mid+1;
    }
    if(nr<=k)printf("%d ", mid);
    else printf("%d ", aux);
    return 0;
}