Cod sursa(job #2581918)

Utilizator bem.andreiIceman bem.andrei Data 16 martie 2020 00:20:30
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <iostream>
#include <fstream>


using namespace std;
ifstream r("transport.in");
ofstream w("transport.out");
int v[16003], n, k;

int verificare(int vmin)
{
    int s = 0, cnt = 1;
    for (int i = 1; i <= n; i++)
    {
        if (v[i] > vmin)
        {
            return 0;
        }
        if (s + v[i] <= vmin)
        {
            s += v[i];
        }
        else
        {
            cnt++;
            s = v[i];
        }
    }
    if(cnt<=k){
        return 1;
    }
    else{
        return 0;
    }

}

int CautBin()
{
    int st, dr, mij, p;
    st = 1;
    dr = 16000*16000;
    p = 1;
    while (st <= dr)
    {
        mij = (st + dr) / 2;
        if (verificare(mij) == 1)
        {
            p = mij;
            dr = mij - 1;
        }
        else
        {
            st = mij + 1;
        }
    }
    return p;
}
int main()
{
    r>>n>>k;
    for (int i = 1; i <= n; i++)
    {
        r>>v[i];
    }
    w<<CautBin();
    return 0;
}