Cod sursa(job #3265313)

Utilizator maxtraAlex Deonise maxtra Data 29 decembrie 2024 09:53:16
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int a[16001], n, m, i, k, j, l, mid;

int IsOK(int x)
{
    int s = 0, cnt = 1;

    for (i = 1; i <= n; i++)
    {
        if (a[i] > x)
        return 0;

        s += a[i];

        if (s > x)
        {
            cnt++;
            s = a[i];
        }
    }

    if (cnt <= k)
            return 1;
    return 0;
}

int BinarySearch(int a[])
{
    int st = 1, dr = 256000000, ok = -1;

    while (st <= dr)
    {
        mid = st + (dr - st) / 2;
        if (IsOK(mid))
        {
            ok = mid;
            dr = mid - 1;
        }
        else st = mid + 1;
    }

    return ok;
}

int main()
{
    in >> n >> k;

    for (i = 1; i <= n; i++)
        in >> a[i];

    out << BinarySearch(a);

    return 0;
}