Cod sursa(job #3244931)

Utilizator AnduRazvanMindrescu Andu AnduRazvan Data 26 septembrie 2024 19:53:31
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <fstream>

using namespace std;

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

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