Cod sursa(job #2481668)

Utilizator IoanaDraganescuIoana Draganescu IoanaDraganescu Data 27 octombrie 2019 11:25:56
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <iostream>
#include <fstream>

using namespace std;

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

const int nmax = 16000;

int n, k, v[nmax + 5];

void Read(){
    fin >> n >> k;
    for (int i = 1; i <= n; i++)
        fin >> v[i];
}

int Check(int q){
    int nr = k, ind = 1;
    while (nr){
        int s = q;
        while (s >= v[ind]){
            s -= v[ind];
            ind++;
            if (ind == n + 1)
                return 1;
        }
        nr--;
    }
    return 0;
}

int BinSearch(){
    int l = 1, r = n * nmax;
    int ans = r;
    while (l <= r){
        int mid = (l + r) / 2;
        if (Check(mid)){
            r = mid - 1;
            ans = min(ans, mid);
        }
        else
            l = mid + 1;
    }
    return ans;
}

int main(){
    Read();
    fout << BinSearch() << '\n';
    return 0;
}