Cod sursa(job #2642885)

Utilizator alextmAlexandru Toma alextm Data 17 august 2020 14:54:40
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <fstream>
using namespace std;

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

#define MAXN 16001

int n, k;
int v[MAXN];

int check(int val) {
    int sum = 0, cnt = 1;

    for(int i = 1; i <= n; i++) {
        if(v[i] > val) return 0;
        if(sum + v[i] <= val)
            sum += v[i];
        else {
            cnt++;
            sum = v[i];
        }
    }

    return (cnt <= k);
}

int main() {

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

    int st = 1, dr = 256000000;
    int pos = -1;
    while(st <= dr) {
        int mid = st + (dr - st) / 2;
        if(check(mid) == 1) {
            pos = mid;
            dr = mid - 1;
        }
        else
            st = mid + 1;
    }

    fout << pos << '\n';


    return 0;
}