Cod sursa(job #2890556)

Utilizator Bogdy_PPrunescu Bogdan Bogdy_P Data 15 aprilie 2022 22:30:50
Problema Transport Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <bits/stdc++.h>

using namespace std;

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

int n, k, v[16001], Max;

bool check(int x, int k)
{
    int sum = 0;
    for (int i = 1; i <= n; i++) {
        sum += v[i];
        if (sum > x) {
            k--;
            sum = 0;
            i--;
        }
        if (k < 0)
            return 0;
    }
    return 1;
}

int Binary_search(int k)
{
    int i, step = 1 << 20;
    for (i = Max; step; step >>= 1)
        if (i + step < (1 << 20) && !check(i + step, k))
           i += step;
    return i;
}

int main()
{
    in >> n >> k;
    for (int i = 1; i <= n; i++) {
        in >> v[i];
        Max = max(Max, v[i]);
    }
    out << Binary_search(k) + 1;
    return 0;
}