Cod sursa(job #3208264)

Utilizator Manolea_Teodor_StefanManolea Teodor Stefan Manolea_Teodor_Stefan Data 28 februarie 2024 10:08:23
Problema Transport Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <bits/stdc++.h>

#define fin cin
#define fout cout

using namespace std;
//ifstream fin("transport.in");
//ofstream fout("transport.out");

using ll = long long;

int n,k;
array<int,16001> arr;

ll ans;
ll lo = 1, hi;

bool f (const int mid) {
    int cnt = 0;
    int val = 0;
    for (int i = 1; i <= n; i++) {
        if (arr[i] > mid) {
            return false;
        }
        val += arr[i];
        if (val > mid) {
            cnt++;
            val = arr[i];
        }
    }
    return cnt < k;
}

int main() {
    fin >> n >> k;
    for (int i = 1; i <= n; i++)
        fin >> arr[i],
        hi += arr[i];

    while (lo <= hi) {
        int mid = lo + (hi - lo) / 2;
        if (f(mid)) {
            ans = mid;
            hi = mid-1;
        } else {
            lo = mid+1;
        }
    }
    fout << ans;
    return 0;
}