Cod sursa(job #3345740)

Utilizator radwk21Cornea Radu radwk21 Data 10 martie 2026 20:59:03
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <bits/stdc++.h>
using namespace std;

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

#define pb push_back
#define ll long long
#define INF 1e9

int n,k,st[16006],maxi,sum;

bool check(int cap){
    int i = 1;
    int curr = 0;
    int transportsUsed = 1;
    while(i <= n && transportsUsed <= k){
        if(curr + st[i] > cap){
            transportsUsed++;
            curr = st[i];
        }else curr += st[i];
        i++;
    }
    return transportsUsed <= k;
}

int main() {
    fin >> n >> k;
    maxi = 0;
    sum = 0;
    for(int i=n;i>=1;i--){
        fin >> st[i];
        maxi = max(maxi,st[i]);
        sum += st[i];
    }
    int l = maxi, r = sum,rez=-1;
    while(l<=r){
        int mid = (l+r)/2;
        // try potential cap.
        if(check(mid)){
            r = mid - 1;
            rez = mid;
        }else l = mid + 1;
    }
    fout << rez;
    return 0;
}