Cod sursa(job #1562055)

Utilizator retrogradLucian Bicsi retrograd Data 4 ianuarie 2016 19:23:19
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.59 kb
#include <iostream>

using namespace std;

int V[50000];
int n, k;

bool good(int t) {
    int s = 0, cnt = 1;
    for(int i=1; i<=n; i++) {
        if(s + V[i] > t)
            cnt += 1, s = 0;
        if(V[i] > t)
            return false;
        s += V[i];
    }

    return cnt <= k;
}

int main() {
    freopen("transport.in", "r", stdin);
    freopen("transport.out", "w", stdout);

    cin >> n >> k;

    for(int i=1; i<=n; i++)
        cin >> V[i];

    int sol = 0;
    for(int i = (1 << 30); i; i >>= 1)
        if(!good(sol + i))
            sol += i;
    cout << sol + 1;

    return 0;
}