Cod sursa(job #1799722)

Utilizator giotoPopescu Ioan gioto Data 6 noiembrie 2016 18:16:08
Problema Transport Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <cstdio>
using namespace std;

int n, m, a[16001];
inline bool CALC (int V){
    int S = 0, NR = 1;
    for(int i = 1; i <= n ; ++i){
        if(S + a[i] > V && S == 0) return 0;
        if(S + a[i] > V) ++NR, S = 0;
        if(NR > m) return 0;
        S = S + a[i];
    }
    return 1;
}
int main()
{
    freopen("transport.in", "r", stdin);
    freopen("transport.out", "w", stdout);
    scanf("%d%d", &n, &m);
    for(int i = 1; i <= n ; ++i)
        scanf("%d", &a[i]);
    int st = 1, dr = 256000000;
    while(st <= dr){
        int mij = (st + dr) / 2;
        if(CALC(mij))
            dr = mij - 1;
        else
            st = mij + 1;
    }
    printf("%d", st);
    return 0;
}