Cod sursa(job #2242800)

Utilizator Gigi123Puradelu din Pascani Gigi123 Data 19 septembrie 2018 16:04:09
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <fstream>
#include <algorithm>
using namespace std;
int v[16005],n,k,l,r=16000*16000,mid;
int f()
{
    int drumuri = 1, s = 0;
    for (int i = 1; i <= n; ++i) {
        if (s + v[i] > mid) {
            s = v[i];
            drumuri++;
        } else {
            s += v[i];
        }
    }
    if (drumuri <= k)
        return 1;
    return 0;
}
int lowerbound()
{
    while(l<r)
    {
        mid=(l+r)/2;
         if(f() == 1)
            r=mid;
        else
            l=mid+1;
    }
    return l;
}
int main()
{
    ifstream fin("transport.in");
    ofstream fout ("transport.out");
    fin >> n >> k;
    for(int i=1;i<=n;i++)
    {
        fin >> v[i];
        if (v[i] > l)
            l = v[i];
    }
    fout << lowerbound();
    return 0;
}