Cod sursa(job #3342753)

Utilizator AndreiEnacheTheGoatAndrei Iancu Enache AndreiEnacheTheGoat Data 25 februarie 2026 16:18:20
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <fstream>

using namespace std;

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

const int INF = 1e9;
int v[16005];
int n, k;

int ok(int c)
{
    int i, op, sum;
    i = op = 1;
    sum = 0;
    while(i <= n)
    {
        if(v[i] > c)
        {
            op = INF;
            return op;
        }
        if(sum + v[i] > c)
        {
            op ++;
            sum = v[i];
        }
        else
            sum = sum + v[i];
        i ++;
    }
    return op;
}
int BSL(int st, int dr)
{
    int med, last, t;
    last = -1;
    while(st <= dr)
    {
        med = (st + dr) / 2;
        t = ok(med);
        if(t <= k)
        {
            last = med;
            dr = med - 1;
        }
        else
            st = med + 1;
    }
    return last;
}
int main()
{
    int s, i, rasp;
    fin >> n >> k;
    s = 0;
    for(i = 1; i <= n; i ++)
    {
        fin >> v[i];
        s = s + v[i];
    }
    rasp = BSL(1, s);
    fout << rasp << "\n";
    return 0;
}