Cod sursa(job #3337556)

Utilizator nicoleta_iancuIancu Nicoleta nicoleta_iancu Data 28 ianuarie 2026 19:15:51
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.1 kb

#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
vector<int>v;
ifstream fin("transport.in");
ofstream fout("transport.out");
int n, k;
const int NMAX = 16000 * 16000;//pt ca daca ai 16 000 de saltele cu val 16000 si ai k=1 atunci e nr maxim
bool ok(int &val) {

    int sumAnt = 0;
    int transportCrt = 0;
    for (int i = 0; i < n; ++i) {
        if (sumAnt + v[i] > val) {
            sumAnt=0;
            transportCrt++;
        }
        sumAnt += v[i];
        if (v[i] > val || transportCrt>=k) {
            return false;
        }
    }
    return true;
}
int cb() {//cautare binara pe rezultat
    int st = 0;
    int dr = NMAX;
    int rez = 0;

    while (st <= dr) {
        int mij = (st + dr) / 2;
        if (ok(mij)) {
            rez = mij;
            dr = mij - 1;
        }
        else {
            st = mij + 1;
        }
    }
    return rez;
}
int main()
{
    fin >> n>>k;
    v.resize(n);
    for (int i = 0; i < n; ++i) {
        fin >> v[i];
    }
    fout << cb();
    return 0;
}
//=^..^=