Cod sursa(job #2665925)

Utilizator esanustefanEsanu Stefan esanustefan Data 31 octombrie 2020 14:41:11
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <fstream>

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

int main()
{
    int n, k, i, v[16001], maxi = 0, sum = 0, cap;
    fin >> n >> k;
    for(i = 1; i <= n; i ++)
    {
        fin >> v[i];
        sum = sum + v[i];
        if(v[i] > maxi)
            maxi = v[i];
    }
    int st = maxi;
    int dr = sum;
    while(st <= dr)
    {
        int mij = (st + dr) / 2;
        int s = 0, ture = 1;
        for(i = 1; i <= n; i++)
        {
            if(s + v[i] <=  mij)
                s = s + v[i];
            else
            {
                ture++;
                s = v[i];
            }
        }
        if(ture <= k)
        {
            cap = mij;
            dr = mij - 1;
        }
        else
        {
            st = mij  + 1;
        }
    }

    fout << cap;
    return 0;
}