Cod sursa(job #1734561)

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

using namespace std;

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

int v[16005], n, k;


bool isOK2(int capacitate)
{

    int i = 1, cap = 0, cate=0;
    while(i<=n)
    {

        if(cap>=v[i])
        {
            cap -= v[i];
            i++;
        }
        else
        {
            if(v[i]>capacitate) return false;
            cate++;
            cap = capacitate;
        }
    }
    if(cate<=k) return true;
    return false;
}


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

    while(st<=dr)
    {
        int m = (st+dr) / 2;
        if( isOK2(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];

    fout << cb();
}