Cod sursa(job #2353430)

Utilizator SochuDarabaneanu Liviu Eugen Sochu Data 24 februarie 2019 12:02:55
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <bits/stdc++.h>
#define NMAX 16001

using namespace std;

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

int n, k, i;
int a[NMAX];

bool ok(int c)
{
    int ko = k, cc = c;

    for(i=1; i<=n; i++)
    {
        if (a[i] > c)
        {
            return false;
        }
        if(a[i] <= cc)
            cc -= a[i];
        else
        {
            ko--;
            if(ko <= 0)return false;
            cc = c - a[i];
        }
    }
    return true;
}

int cautare_bin()
{
    int mij = 0, st = 1, dr = NMAX * NMAX, mini = -1;
    while(st <= dr)
    {
        mij = (dr - st)/ 2 + st;
        if(ok(mij))
        {
            mini = mij;
            dr = mij - 1;
        }

        else st = mij + 1;
    }
    return mini;
}

int main()
{
    f>>n>>k;
    for(i=1; i<=n; i++)f>>a[i];
    g<<cautare_bin();
    return 0;
}