Cod sursa(job #2779352)

Utilizator dotyzebra775Papuc Stefan dotyzebra775 Data 3 octombrie 2021 15:13:54
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <fstream>
#define N 16005
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");

int n, k;

int a[N];

int s, vmax = -1;

void citire()
{
    int i;
    fin >> n >> k;
    for (i = 1; i <= n; ++ i)
    {
        fin >> a[i];
        s += a[i];
        if (a[i] > vmax)
            vmax = a[i];
    }
}

int main()
{
    int st, dr, mij;
    int nrt, rez, vol, i;
    citire();
    st = vmax;
    dr = s;
    while(st <= dr)
    {
        mij = (st + dr) / 2;
        vol = 0;
        nrt = 1;
        for (i = 1; i <= n; ++ i)
            if (vol + a[i] <= mij)
                vol += a[i];
            else
            {
                vol = a[i];
                nrt ++;
            }
        if (nrt <= k)
        {
            rez = mij;
            dr = mij - 1;
        }
        else
            st = mij + 1;
    }
    fout << rez;
    //fout << "\n" << vmax << " " << s;
    return 0;
}