Cod sursa(job #1734565)

Utilizator Emy1337Micu Emerson Emy1337 Data 27 iulie 2016 17:41:43
Problema Transport Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <bits/stdc++.h>

using namespace std;

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

int v[16005], n, k, maxy;


int corect(int cap)
{
    int sum=0, tran=0;
    for(int i=1; i<=n; i++)
    {
        sum+=v[i];
        if(sum>cap)
        {
            tran++;
            sum=v[i];
        }

    }
    if(tran<k && cap>=sum)
        return 1;
    return 0;
}


int cb()
{
    int st = maxy, dr = 16000, m, last = -1;

    while(st<=dr)
    {
        int m = (st+dr) / 2;
        if( corect(m) )
        {
            last = m;
            dr = m - 1;
        }
        else
            st = m + 1;
    }

    return last;
}


int main()
{
    fin >> n >> k;
    for(int i=1; i<=n; i++)
        fin >> v[i], maxy=max(maxy,v[i]);

    fout << cb();
}