Cod sursa(job #3355792)

Utilizator ChillingManMihai-Tudor ChillingMan Data 26 mai 2026 10:35:20
Problema Transport Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <iostream>
#include <fstream>

using namespace std;

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

const int NMAX=16000;
int v[NMAX + 1];
int n, k;

int minCap(int x){
    int diff=x, i, nrt=0;
    for (i=1;i<=n;i++){
        if (v[i]<=diff){
            diff=diff-v[i];
        }
        else {
            nrt++;
            diff=x-v[i];
        }
    }
    return nrt<=k;
}

int binSearch (int st, int dr){
    int mij, last=dr;
    while (st <= dr){
        mij=(st+dr)/2;
        if (minCap(mij)==1){
            dr=mij-1;
            last=mij;
        }
        else {
            st=mij+1;
        }
    }
    return last;
}

int main()
{
    int i, st=-1, dr=0;
    fin >> n >> k;
    for (i=1;i<=n;i++){
        fin >> v[i];
        dr=dr+v[i];
        if (st<v[i]){
            st=v[i];
        }
    }
    fout << binSearch(st,dr);
    return 0;
}