Cod sursa(job #2126002)

Utilizator Andrei17Andrei Pascu Andrei17 Data 8 februarie 2018 22:54:13
Problema Transport Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <fstream>

using namespace std;

ifstream in("transport.in");
ofstream out("transport.out");

const int N = 16001;

int n, k, sum[N];

int nrdrumuri(int x) {
    int nr = 1, j = 0;

    for (int i = 1; i <= n; i++) {
        if (sum[i] - sum[j] > x) {
            j = i - 1;
            nr++;
        }
    }

    return nr;
}

void cautbin() {
    int r = 0, pas = 1 << 16;

    while (pas != 0) {
        if (nrdrumuri(r + pas) > k) r += pas;
        pas >>= 1;
    }

    out << r + 1;
}

int main()
{
    int x;
    in >> n >> k;
    for (int i = 1; i <= n; i++) {
        in >> x;
        sum[i] = sum[i - 1] + x;
    }
    cautbin();
}