Cod sursa(job #2181302)

Utilizator mateibordeaMatei Bordea mateibordea Data 21 martie 2018 16:39:15
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <iostream>
#include <fstream>
using namespace std;

const int L= 28;
const int N = 16001;

int n,k,v[N];
bool ok(int c)
{
    int nr=0,cc=0;
    for (int i=1; i<=n; i++)
    {
        if (cc<v[i])
        {
            cc=c;
            nr++;
        }
        if(cc<v[i])
        {
            return false;
        }
        if (nr>k)
        {
            return false;
        }
        cc-=v[i];
    }
    return true;
}

int caut2()
{
    int r=0,pas=1<<L;
    while (pas!=0)
    {
        if (!(ok(r+pas)))
        {
            r+=pas;
        }
        pas/=2;
    }
    r++;
    return r;
}

int main()
{
    ifstream in("transport.in");
    ofstream out("transport.out");
    int i;
    in>>n>>k;
    for (i=1; i<=n; i++)
        in>>v[i];
    out<<caut2();
    return 0;
}