Cod sursa(job #1068853)

Utilizator eugen.nodeaEugen Nodea eugen.nodea Data 28 decembrie 2013 20:58:26
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
# include <cstdio>
# define NMax 16001
using namespace std;

int n, i, s, k, v[NMax], j, m;

bool verif(int m)
{
    int i=1, p, nr=0, j, s;
    while (i <= n)
    {
        s = 0;
        for (j=i; j<=n; ++j)
        {
            s += v[j];
            if (s > m) break;
        }
        p = j-1;
        if (p < i) return false;
        else ++nr, i = p+1;
    }
    if (nr <= k) return true;
            else return false;
}
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]), s += v[i];

    i = 1; j = s;
    while (i <= j)
        {
            m = (i+j) >> 1;
            if (verif(m)) j = m-1;
                     else i = m+1;
        }
    printf("%d\n", j+1);
    return 0;
}