Cod sursa(job #3256983)

Utilizator LucaMirsolea14Luca Mirsolea LucaMirsolea14 Data 16 noiembrie 2024 13:05:10
Problema Transport Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.72 kb
#include<fstream>
#include<climits>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int Nrtrans(int v[], int n, int valmax) {
	int i, nr = 1, sum = 0,maxi=INT_MAX;
	for (i = 1; i <= n; i++) {
		if (v[i] > valmax)
			return maxi;
		if (sum + v[i] <= valmax)
			sum += v[i];
		else {
			nr++;
			sum = v[i];
		}
	}
	return nr;
}
int main() {
	int n, k, v[1002], i, st, dr, mij, rez, sum = 0, val;
	fin >> n >> k;
	for (i = 1; i <= n; i++) {
		fin >> v[i];
		sum += v[i];
	}
	st = 1;
	dr = sum;
	while (st <= dr) {
		mij = (st + dr) / 2;
		val = Nrtrans(v, n, mij);
		if (val <= k) {
			rez = mij;
			dr = mij - 1;
		}
		else
			st = mij + 1;
	}
	fout << rez;
}