Cod sursa(job #2865194)

Utilizator catalinrus123456789Rus Catalin Stelian catalinrus123456789 Data 8 martie 2022 16:30:50
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <fstream>
using namespace std;

const int MAXN = 16005;
int N, K, st[MAXN];

inline bool Check(const int &value) {
	int newTransport = 0, transports = 1;
	for(int i = 1 ; i <= N ; ++ i) {
		if(newTransport + st[i] <= value)
			newTransport += st[i];
		else {
			if(st[i] > value)
				return false;
			newTransport = st[i];
			++ transports;
		}
	}
	return transports <= K;
}

inline int binarySearch() {
	int li = 1, ls = st[0], ans = -1;
	while(li <= ls) {
		int mid = (li + ls) / 2;
		if(Check(mid)) {
			ls = mid - 1;
			ans = mid;
		}
		else li = mid + 1;
	}
	return ans;
}

int main() {
	ifstream fin("transport.in");
	ofstream fout("transport.out");
	fin >> N >> K;
	for(int i = 1 ; i <= N ; ++ i)
		fin >> st[i], st[0] += st[i];
	fout << binarySearch() << '\n';
	return 0;
}