Cod sursa(job #2912985)

Utilizator asdfdAlexandru Andrei asdfd Data 11 iulie 2022 23:25:55
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <iostream>
#include <fstream>
using namespace std;

int n, k, v[16005], leftt, rightt, paths, summ, midd;

int main() {
    ifstream fin("transport.in");
    ofstream fout("transport.out");
	fin >> n >> k;
	for (int i = 1; i <= n; ++i) {
        fin >> v[i];
        leftt = max(leftt, v[i]);
        rightt += v[i];
	}
	while (leftt <= rightt) {
        paths = 1, summ = 0;
        midd = (leftt + rightt) / 2;
        for (int i = 1; i <= n; ++i) {
            if (summ + v[i] > midd) {
                ++paths;
                summ = v[i];
            } else {
                summ += v[i];
            }
        }
        if (paths > k) {
            leftt = midd + 1;
        } else {
            rightt = midd - 1;
        }
	}
	fout << leftt;
	return 0;
}