Cod sursa(job #2810377)

Utilizator AswVwsACamburu Luca AswVwsA Data 29 noiembrie 2021 12:43:29
Problema Transport Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <fstream>
using namespace std;

ifstream cin("transport.in");
ofstream cout("transport.out");

const int NMAX = 16003;
int v[NMAX], n;

int t(int x)
{
    int aux = 0, cnt = 1;
    for (int i = 1; i <= n; i++)
        if (aux + v[i] > x)
        {
            cnt++;
            aux = v[i];
        }
        else
            aux += v[i];
    return cnt;
}
int main()
{
    //redoing some stuff, I guess.
    int k, i, sum = 0;
    cin >> n >> k;
    for (i = 1; i <= n; i++)
    {
        cin >> v[i];
        sum += v[i];
    }
    int st = 1, dr = sum, sol = -1;
    while (st <= dr)
    {
        int med = (st + dr) / 2, tr;
        tr = t(med);
        if (tr <= k)
        {
            sol = med;
            dr = med - 1;
        }
        else
            st = med + 1;
    }
    cout << sol;
}