Cod sursa(job #2349992)

Utilizator alezizalex artene aleziz Data 20 februarie 2019 22:00:14
Problema Transport Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <fstream>

using namespace std;

ifstream cin ("transport.in");
ofstream cout ("transport.out");
const int MAX = 1e5 + 14;
int v [MAX];
int main()
{
    int n,k, suma = 0;
    cin >> n >> k;
    for (int i =1; i<= n; ++i)
    {
        cin >> v[i];
        suma += v [i];
    }
    int st = 1;
    int dr = suma;
    int sol = suma;
    while (st <= dr)
    {
        int mid = (st+dr) / 2;
        int tr = 1;
        int p = 1;
        int s = 0;
        while (p <= n and tr <= k)
        {
            if (s + v [p] <= mid)
                s += v [p ++];
            else
            {
                tr += 1;
                s = v [p ++];
            }
        }
        if (tr <= k)
        {
            sol = mid;
            dr = mid - 1;
        }
        else
        {
            st = mid + 1;
        }
    }
    cout << sol << '\n';
    return 0;
}