Cod sursa(job #2163507)

Utilizator Alex_BubBuburuzan Alexandru Alex_Bub Data 12 martie 2018 18:34:41
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <fstream>
#include <cmath>

using namespace std;

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

int v[16001];

int main()
{
    int n, k, s = 0, maxi = 0, i, ans;

    fin >> n >> k;

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

        if(v[i] > maxi)
            maxi = v[i];

        s += v[i];
    }

    int st = maxi, dr = s;
    while(st <= dr) {
        int m = (dr + st) / 2, x = 0;

        i = 0;
        while(i < n) {
            int cm = m;

            while(cm - v[i] >= 0) {
                cm -= v[i++];
            }

            x++;
        }
        if(x <= k) {
            dr = m - 1;
            ans = m;
        } else
            st = m + 1;
    }

    fout << ans;

    return 0;
}