Cod sursa(job #2132443)

Utilizator razvan242Zoltan Razvan-Daniel razvan242 Data 15 februarie 2018 19:32:37
Problema Transport Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 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 capacitateTemporara = 0;

    for (int i = 1; i <= n; ++i) {
        if (capacitateTemporara + saltele[i] <= capacitate) {
            capacitateTemporara += saltele[i];
        }
        else {
            ++transporturi;
            capacitateTemporara = 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;
}