Cod sursa(job #2890561)

Utilizator Bogdy_PPrunescu Bogdan Bogdy_P Data 15 aprilie 2022 22:43:08
Problema Transport Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.79 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, i = 1;
    while (i <= n) {
        sum += v[i];
        if (sum > x) {
            k--;
            sum = 0;
        }
        else
            i++;
    }
    if (k < 0 || (k == 0 && sum))
        return 0;
    return 1;
}

int Binary_search(int k)
{
    int i, step = 1 << 25;
    for (i = Max; step; step >>= 1)
        if (i + step < (1 << 25) && !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;
}