Cod sursa(job #1473561)

Utilizator alexandru.ghergutAlexandru-Gabriel Ghergut alexandru.ghergut Data 19 august 2015 17:13:18
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <fstream>
using namespace std;

int binarySearch(int left, int right, int st[], int N, int K)
{
    int capacity, transports, sum, i;

    while (right - left > 1)
    {
        capacity = left + (right - left) / 2;
        sum = 0;
        transports = 1;

        for (i = 0; i < N && transports <= K; i++)
            if (sum + st[i] <= capacity)
                sum += st[i];
            else
                sum = st[i], transports++;

        if (transports > K)
            left = capacity;
        else
            right = capacity;
    }

    return right;
}

int main()
{
    int N, K, sum = 0, maxV = 0;
    ifstream f("transport.in");
    f >> N >> K;
    int st[N];

    for (int i = 0; i < N; i++)
    {
        f >> st[i];
        sum += st[i];
        maxV = max(maxV, st[i]);
    }
    f.close();


    ofstream g("transport.out");
    g << binarySearch(maxV - 1, sum + 1, st, N, K);
    g.close();
    return 0;
}