Cod sursa(job #3341934)

Utilizator MihaiDraghiciMIHAI DRAGHICI MihaiDraghici Data 21 februarie 2026 19:12:11
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.96 kb
///Doamne ajuta!!!

#include <bits/stdc++.h>
using namespace std;

vector<int> v;
int N, K;

bool verifica(long long cap) {
    int cnt = 1;
    long long suma = 0;

    for (int i = 0; i < N; i++) {
        if (v[i] > cap) return false;

        if (suma + v[i] <= cap) {
            suma += v[i];
        } else {
            cnt++;
            suma = v[i];
        }
    }

    return cnt <= K;
}

long long cb() {
    long long ans = 0;

    for (long long pas = 1LL << 30; pas > 0; pas /= 2) {
        if (!verifica(ans + pas)) {
            ans += pas;
        }
    }

    return ans + 1;
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    freopen("transport.in", "r", stdin);
    freopen("transport.out", "w", stdout);

    cin >> N >> K;
    v.resize(N);

    for (int i = 0; i < N; i++) {
        cin >> v[i];
    }

    long long cap_min = cb();
    cout << cap_min << '\n';

    return 0;
}