Cod sursa(job #2069282)

Utilizator SburlyAndrei Florin Sburly Data 18 noiembrie 2017 12:47:15
Problema Transport Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
/********************
    Created by Sburly
********************/
#include <fstream>

using namespace std;

int n, k, v[16000];

bool ok(const int& c)
{
    int i = 0;
    int s = 0;
    int d = 1;
    while(i < n)
    {
        if(s+v[i] > c)
            s=v[i++],d++;
        else
            s+=v[i++];
        if(d>k)
            return false;
    }
    return true;
}

int bin_search(int& s, int& d)
{
    int lmij= 0;
    int mij = 0;

    while(s<=d)
    {
        lmij = mij;
        mij = (s+d)/2;

        if(ok(mij))
            d = mij-1;
        else
            s=mij+1;
    }
    return ok(mij)?mij:lmij;
}

int main()
{
    ifstream f("transport.in");
    ofstream g("transport.out");

    int mx=-1, s=0;

    f >> n >> k;
    for(int i = 0; i < n; i++)
    {
        f >> v[i];
        s+=v[i];
        mx= max(mx,v[i]);
    }

    g << bin_search(mx, s);

    return 0;
}