Cod sursa(job #2622124)

Utilizator alezgandruOana Alexandru Andrei alezgandru Data 31 mai 2020 15:40:09
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <iostream>
#include <fstream> 
using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
int v[16005], sol;

int main()
{
    int n, k, max = 0, st, dr, mid, sum = 0;
    in >> n >> k;
    int i;

    for (i = 1; i <= n; i++)
    {
        in >> v[i];
        sum += v[i];

        if (v[i] > max)
            max = v[i];
    }

    st = max, dr = sum;

    while (st <= dr)
    {
        int crt = 1, s = 0;
        mid = st + (dr - st) / 2;

        for (i = 1; i <= n; i++)
        {
            if (s + v[i] <= mid)
                s += v[i];
            else
            {
                s = v[i];
                crt++;
            }
        }

        if (crt > k) 
            st = mid + 1;
        else
            sol = mid, dr = mid - 1;
    }

    out << sol;

    return 0;
}