Cod sursa(job #2566320)

Utilizator Nita_CristianNita Cristian Nita_Cristian Data 2 martie 2020 20:30:54
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <bits/stdc++.h>

using namespace std;

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

int n, k, v[16002], s, maxim = INT_MIN, st, dr;

bool ok(int x)
{
    int suma = 0, contor = 0;

    for (int i = 1; i <= n; i++)
    {
        if (suma + v[i] <= x)
            suma += v[i];
        else
        {
            suma = v[i];
            contor++;
        }
    }
    return (contor < k);
}

int main()
{
    fin >> n >> k;
    for (int i = 1; i <= n; i++)
    {
        fin >> v[i];
        s += v[i];
        maxim = max(maxim, v[i]);
    }
    st = maxim, dr = s;

    while (st <= dr)
    {
        int m = (st + dr) / 2;
        if (ok(m))
        {
            dr = m - 1;
        }
        else
        {
            st = m + 1;
        }
    }
    fout << st;

    fin.close();
    fout.close();
    return 0;
}