Cod sursa(job #3160797)

Utilizator mateilupuMatei Lupu mateilupu Data 25 octombrie 2023 08:49:35
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <fstream>

using namespace std;

int v[16001];

int main()
{
    ifstream cin ("transport.in");
    ofstream cout ("transport.out");
    int n, k, i, st = -1, dr = 0, m, s, cnt, sol;
    cin >> n >> k;
    for(i = 1; i <= n; i++) {
        cin >> v[i];
        dr += v[i];
        if(v[i] > st)
            st = v[i];
    }
    while(st <= dr) {
        m = (st + dr) / 2;
        cnt = 1;
        s = 0;
        for(i = 1; i <= n; i++) {
            if(s + v[i] <= m)
                s += v[i];
            else {
                s = v[i];
                cnt++;
            }
        }
        if(cnt > k)
            st = m + 1;
        else {
            sol = m;
            dr = m - 1;
        }
    }
    cout << sol;
    return 0;
}