Cod sursa(job #1734547)

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

using namespace std;

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

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

bool isOK(int capacitate)
{
    int cate = 0;
    for(int i=1; i<=n; i++)
    {
        int cap = capacitate;

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

    if(cate<=k) return true;
    return false;
}



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

    int  st = 1, dr = 16000;

    while(st <= dr)
    {
        m = (st + dr) / 2;
        if(isOK(m))
            dr = m - 1;
        else
            st = m + 1;

    }
    if(!isOK(m))
        m++;

    fout << m;
}