Cod sursa(job #3156973)

Utilizator Codrin_RobuRobu Codrin Codrin_Robu Data 13 octombrie 2023 22:25:07
Problema Transport Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <iostream>
#include <fstream>

using namespace std;

const int maxn = 16005;

int n, k;
int v[maxn];

int main() {
    ifstream fin("transport.in");
    ofstream fout("transport.out");
    fin >> n >> k;
    int st = 0, dr = 0;
    for (int i = 0; i < n; i++) {
        fin >> v[i];
        dr += v[i];
        if (v[i] > st) {
            st = v[i];
        }
    }

    while (st < dr) {
        int mij = (st + dr) / 2;
        int tc = 0;
        int cc = 0;

        for (int i = 0; i < n; i++) {
            if (v[i] > mij) {
                tc = k + 1;
                break;
            }

            if (cc + v[i] <= mij) {
                cc += v[i];
            } else {
                tc++;
                cc = v[i];
            }
        }

        if (tc <= k) {
            dr = mij;
        } else {
            st = mij + 1;
        }
    }

    fout << dr << "\n";

    return 0;
}