Cod sursa(job #2132436)

Utilizator razvan242Zoltan Razvan-Daniel razvan242 Data 15 februarie 2018 19:28:42
Problema Transport Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <fstream>

using namespace std;

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

int n, maxTransporturi;
int saltele[16001];

inline bool transporta(int capacitate) {
    int transporturi = 1;
    int capacitateDisponibila = capacitate;

    for (int i = 1; i <= n; ++i) {
        if (capacitateDisponibila - saltele[i] < 0) {
            ++transporturi;
            capacitateDisponibila = capacitate - saltele[i];
        }
        else
            capacitateDisponibila -= saltele[i];
    }

    return transporturi <= maxTransporturi;
}

int main()
{
    fin >> n >> maxTransporturi;

    for (int i = 1; i <= n; ++i)
        fin >> saltele[i];

    int st = 1, dr = 2e9;
    int mid, raspuns;

    while (st <= dr) {
        mid = (st + dr) / 2;

        if (transporta(mid)) {
            dr = mid - 1;
            raspuns = mid;
        }
        else
            st = mid + 1;
    }

    fout << raspuns << '\n';
    return 0;
}