Cod sursa(job #3271146)

Utilizator iustinola16Olariu Iustin iustinola16 Data 25 ianuarie 2025 11:13:15
Problema Transport Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <fstream>

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

int n, k, v[16001],maxim;
long long s = 0;
int main()
{
    fin>>n>>k;
    for (int i = 1; i<=n; i++) {
        fin>>v[i];
        s+=v[i];
        if (v[i] > maxim) maxim = v[i];
    }
    long long st = 1, dr = s, mij;
    long long ans = -1;
    while (st<=dr) {
        mij = (st+dr)/2;
        if (mij >= maxim) {
            long long int cap = 0;
            int nr = 0;
            for (int i = 1; i<=n; i++) {
                if (cap > mij) {
                    nr++;
                    cap = v[i];
                }
                else cap+=v[i];
            }
            if (nr <= k) {
                ans = mij;
                dr = mij-1;
            }
            else st = mij+1;
        }
        else {
            st = mij+1;
        }
    }
    fout<<ans+1;
    return 0;
}