Cod sursa(job #3173890)

Utilizator David_RadavoiRadavoi David Alexandru David_Radavoi Data 23 noiembrie 2023 21:26:08
Problema Transport Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <iostream>
#include <fstream>

using namespace std;

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

#define MAXN 16000

int v[MAXN + 2], N, maxim, K;

void cb()
{
    int st = maxim, dr = 16000, sol = 0, m, r, sum, km;
    while (st <= dr)
    {
        m = (st + dr) / 2;
        sum = r = km = 0;
        while (r <= N)
        {
            while (sum <= m && r <= N + 1)
            {
                sum += v[++r];
            }
            r--;
            km++;
            sum = 0;
        }
        if (km <= K)
        {
            dr = m - 1;
            sol = m;
        }
        else
        {
            st = m + 1;
        }
    }
    fout << sol;
}

int main()
{
    int i;
    fin >> N >> K;
    for (i = 1; i <= N; i++)
    {
        fin >> v[i];
        maxim = max(maxim, v[i]);
    }
    cb();
    return 0;
}