Cod sursa(job #1808629)

Utilizator andrei20003Ionescu Andrei andrei20003 Data 17 noiembrie 2016 21:56:50
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <cstdio>

using namespace std;

int v[16010];

int main()
{
    int n,k,i,st,dr,x,m,s,nr,max1;
    freopen("transport.in","r",stdin);
    freopen("transport.out","w",stdout);
    scanf("%d%d", &n, &k);
    st=1;
    dr=x=max1=0;
    for (i=1;i<=n;i++) {
        scanf("%d", &v[i]);
        dr+=v[i];
        if (v[i]>=max1)
            max1=v[i];
    }
    st=max1;
    while (st<=dr) {
        m=(st+dr)/2;
        s=0;
        nr=1;
        for (i=1;i<=n;i++)
            if (m>=s+v[i])
                s+=v[i];
            else
                s=v[i],nr++;
        if (nr<=k)
            x=m,dr=m-1;
        else
            st=m+1;
    }
    printf("%d ", x);
    return 0;
}