Cod sursa(job #1452868)

Utilizator bogdan.balanBogdan Balan bogdan.balan Data 22 iunie 2015 09:20:54
Problema Transport Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
define _CRT_SECURE_NO_DEPRECATE
#include <stdio.h>
#include <stdlib.h>
#define MAX(x, y) ((x) > (y) ? (x) : (y))
#define mid ((l + r) >> 1)

int N, K, X[16001];

int check(int v){
    int s = 0, _k = 0;
    for (int i = 1; i <= N && _k <= K; ++i){
        if (s + X[i] <= v) s += X[i];
        else s = X[i], ++_k;
    }
    return _k >= K;
}

int main(void)
{
    int l = 0, r = 0, ans;
    freopen("transport.in", "r", stdin);
    freopen("transport.out", "w", stdout);

    scanf("%d %d", &N, &K);
    for (int i = 1; i <= N; ++i)
        scanf("%d", &X[i]),
        l = MAX(l, X[i]),
        r += X[i];

    while (l != r)
        if (check(mid)) l = mid + 1;
        else r = mid;
    ans = mid;
    while (check(ans++));
    printf("%d", ans - 1);
    return 0;