Cod sursa(job #3307639)

Utilizator InsanekktVlad Matei Insanekkt Data 22 august 2025 13:23:44
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.62 kb
#include <fstream>
#include <iostream>

std::ifstream in("transport.in");
std::ofstream out("transport.out");

int n, k, v[16005];
int st = 1, dr = 0, cap = 1;

int main() {
	in >> n >> k;
	for (int i = 0; i < n; ++i) {
		in >> v[i];
		dr += v[i];
	}
	
	while (st <= dr) {
		int sum = 0, tr=1;
		cap = (st + dr) / 2;

		for (const auto& val : v) {
			if (val > cap) {
				tr = k+1;
				break;
			}
			if (sum + val <= cap) {
				sum += val;
			}
			else {
				sum = val;
				++tr;
			}
		}

		if (tr > k) {
			st = cap + 1;
		}
		else {
			dr = cap-1;
		}
	}

	out << st;
	return 0;

}