Cod sursa(job #2177705)

Utilizator EclipseTepes Alexandru Eclipse Data 18 martie 2018 19:28:51
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <iostream>
#include <fstream>
#define dMAX 16005

using namespace std;

int n, k, c;
int arr[dMAX];
int S, maxi, result;

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

bool Transportable(int capacity) {
    int tempSum = 0, steps = 1;
    for (int i = 1; i <= n; i++) {
        if (tempSum + arr[i] <= capacity) {
            tempSum += arr[i];
        } else {
            steps++;
            tempSum = arr[i];
        }
    }
    return steps <= k;
}

void BinarySearch(int a, int b) {
    if (a > b) return;
    c = a + (b - a) / 2;
    if (Transportable(c)) {
        result = c;
        BinarySearch(a, c - 1);
    } else BinarySearch(c + 1, b);
}

int main()
{
    int i, j;
    fin >> n >> k;
    for (i = 1; i <= n; i++) {
        fin >> arr[i];
        S += arr[i];
        maxi = max(maxi, arr[i]);
    }
    BinarySearch(maxi, S);
    fout << result;
    return 0;
}