Cod sursa(job #901459)

Utilizator mvcl3Marian Iacob mvcl3 Data 1 martie 2013 10:20:38
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include<cstdio>
#define LL long long
using namespace std;

const int NMAX = 16003;
LL n, k, v[NMAX];

inline int count(int val)
{
    int kk = k, s = val , i;
    for(i = 1; i <= n && kk; ++i)
        if(s >= v[i]) s -= v[i];
        else
        {
            s = val, --kk, --i;
        }

    if(i == n + 1) return 1;


    return 0;
}
inline LL caut(LL st, LL dr)
{
    LL m;
    m = (st + dr) >> 1;
    if(st == dr) return st;
    if(count(m)) caut(st , m);
    else caut(m + 1, dr);
}
int main()
{
    freopen("transport.in", "rt", stdin); freopen("transport.out", "wt", stdout);

    scanf("%ld%ld", &n, &k);

    for(int i = 1; i <= n; ++i) scanf("%ld", &v[i]);

    printf("%ld\n", caut(1, NMAX * NMAX));
}