Cod sursa(job #2552044)

Utilizator Varga_GabrielaVarga Gabriela Varga_Gabriela Data 20 februarie 2020 15:24:08
Problema Transport Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int n, k, v[16005], i, j, mij;
bool verificare(int nr)
{
    int i = 1;
    int a = nr;
    int ap = 1;
    for (; v[i]; i ++)
    {
        if (v[i] <= a)
        {
            a -= v[i];
        }
        else
        {
            a = nr - v[i];
            ap ++;
        }
    }
    //cout << (bool)(ap <= k) << " " << nr << endl;
    return (bool)(ap <= k);
}
int main()
{
    fin >> n >> k;
    for (i = 1; i <= n; i ++)
    {
        fin >> v[i];
    }
    i = 1;
    j = 160000;
    while (i < j)
    {
        mij = (i + j) / 2;
        if (verificare(mij))
            j = mij - 1;
        else
            i = mij + 1;
    }
    if (verificare(mij))
        fout << mij;
    //cout << endl << endl;
    //for (i = 1; i <= n; i ++)
        //cout << v[i] << " ";
    else
    {
        while (!verificare(mij))
            mij ++;
        fout << mij;
    }
    return 0;
}