Cod sursa(job #2607663)

Utilizator Constantin.Dragancea Constantin Constantin. Data 29 aprilie 2020 22:55:27
Problema Transport Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.65 kb
#include <bits/stdc++.h>
using namespace std;
 
const int N = 16010;
int n, k, a[N];
 
int main(){
    ifstream cin ("transport.in");
    ofstream cout ("transport.out");
    cin >> n >> k;
    for (int i=1; i<=n; i++) cin >> a[i], assert(a[i] <= 16000);
    auto check = [&](int cap)->bool{
        int cnt = 1, fil = 0;
        for (int i=1; i<=n; i++){
            fil += a[i];
            if (fil > cap) fil = a[i], cnt++;
        }
        return cnt <= k;
    };
    int ans = 0, mx = 16000 * 16000;
    for (int i=29; i>=0; i--){
        if (ans + (1 << i) <= mx && !check(ans + (1 << i)))
            ans += (1 << i);
    }
    cout << ans + 1;
    return 0;
}