Cod sursa(job #1560459)

Utilizator deresurobertoFMI - Deresu Roberto deresuroberto Data 2 ianuarie 2016 18:52:23
Problema Transport Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
//Roberto Deresu - FMI
//Re :)
#include <fstream>
#define nx 16007
using namespace std;
int n, k, v[nx];

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

bool Re(int value)
{
    int m = 0;
    int sum = 0;

    for (int i = 0; i < n; i++)
    {
        if (v[i] > value)
        {
            return false;
        }

        if ((sum += v[i]) > value)
        {
            m++;
            sum = v[i];
        }
    }

    return m < k;
}

int main()
{
    fin >> n >> k;

    for (int i = 0; i < n; i++)
    {
        fin >> v[i];
    }

    int c = 16000;
    int step = 1 << 14;

    while (step >>= 1)
    {
        if (Re(c - step))
        {
            c -= step;
        }
    }

    fout << c;

    return 0;
}