Cod sursa(job #3178713)

Utilizator LucasSecaraSecara Lucas Victor LucasSecara Data 2 decembrie 2023 12:07:46
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int v[16001], n, k, maxi, s=0;

int cb(int k, int st, int dr, int n){
    int mij, val=dr;
    while(st<=dr){
        mij = (st+dr)/2;
        int s=0, t=0;
        for (int i=1; i<=n; i++){
            s+=v[i];
            if (s>mij){
                s=v[i];
                t++;
            }
        }
        t++;
        if (t<=k){
            dr = mij-1;
            if (mij<val){
                val = mij;
            }
        }
        else if (t>k){
            st = mij+1;
        }
    }
    return val;
}

int main() {
    fin >> n >> k;
    for (int i=1; i<=n; i++){
        fin >> v[i];
        maxi = max(maxi, v[i]);
        s+=v[i];
    }
    int rez = cb(k, maxi, s, n);
    fout << rez;
    return 0;
}