Cod sursa(job #2480426)

Utilizator LittleGreenMenMihai A LittleGreenMen Data 25 octombrie 2019 16:52:01
Problema Transport Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <fstream>
#include <iostream>

using namespace std;

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

int saltele[16000];
int n, k;

int check(int si)
{
    int i, transport, drumuri;

    transport = 0;
    drumuri = 1;

    for(i = 0; i < n && drumuri <= k; i++)
    {
        transport += saltele[i];

        if(transport > si)
        {
            transport = saltele[i];
            drumuri++;
        }
    }

    return !(drumuri > k);
}

int main()
{
    int i, max_size;
    int left, right, mid, s;

    in >> n >> k;

    max_size = 0;

    for(i = 0; i < n; i++)
    {
        in >> saltele[i];
        max_size += saltele[i];
    }

    left = 0;
    right = max_size;

    while(left <= right)
    {
        mid = (left + right) / 2;

        if(check(mid))
        {
            s = mid;
            right = mid - 1;
        }
        else
            left = mid + 1;
    }

    out << s;

    return 0;
}