Cod sursa(job #3159959)

Utilizator XxThornadoxXStoica Teodora XxThornadoxX Data 22 octombrie 2023 16:19:05
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <fstream>
#include <iostream>

using namespace std;

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

int v[16005];

int nr_transporturi(int v[], int n, int carry) {
	int transporturi = 1, sum = 0;
	for(int i = 0; i < n; ++i)
		if(sum + v[i] <= carry)
			sum += v[i];
		else{
			transporturi++;
			sum = v[i];
		}

	return transporturi;
}

int main() {
	int n, k, sum = 0;
	fin >> n >> k >> v[0];
	int mx = v[0];
	for(int i = 1; i < n; ++i){
		fin >> v[i];
		if(mx < v[i])
            mx = v[i];
		sum += v[i];
	}

	int b = mx - 1, e = sum, mid;
	while(e - b > 1){
		mid = (b + e) >> 1;
		if(nr_transporturi(v, n, mid) > k)
			b = mid;
		else
			e = mid;
	}

	fout << e << '\n';

	return 0;
}