Cod sursa(job #2960019)

Utilizator popica312Pop David-Gabriel popica312 Data 3 ianuarie 2023 14:09:45
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <bits/stdc++.h>
std::ifstream f("transport.in");
std::ofstream g("transport.out");

long double t;
int n, k, a[16000], i, st, dr, mij, maxim, total, transporturi, capacitate;

int main()
{
    t = time_t();
    f >> n >> k;
    for (int i = 0; i < n; ++i){
        f >> a[i];
        total += a[i];
        maxim = std::max(maxim, a[i]);
    }
    st = maxim;
    dr = total;
    while (st<=dr){
    mij = st + (dr - st) / 2;
    transporturi = 1;
    capacitate = 0;
    for (int i = 0; i < n; ++i){
        capacitate += a[i];
        if (capacitate > mij){
            capacitate = a[i];
            ++transporturi;
        }
    }
    if (transporturi <= k) dr = mij - 1;
    else st = mij + 1;
    }
    g << st;
    t = time_t() - t;
    std::cout << t << '\n';
    return 0;
}