Cod sursa(job #2662638)

Utilizator NeoxDragos Stefan Neox Data 24 octombrie 2020 12:02:17
Problema Transport Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.6 kb
#include <fstream>
using namespace std;

ifstream fin("transport.in");
ofstream fout("transport.out");
const int nmax = 16000;
int n, k, i, j, v[nmax+1];
int transp(int vol) {
	int s = 0, c = 0;
	for(i = 0; i < n; i++) {
		s += v[i];
		if(i==n-1 || s+v[i+1]>vol) {
			s = 0;
			c++;
		}
	}
	return c;
}
int cb() {
	int st = 1, dr = nmax, m, p;
	while(st<=dr) {
		m = (st+dr)/2;
		if(k>=transp(m))
			dr=m-1, p=m;
		else
			st=m+1;
	}
	return p;
}
int main()
{
	fin >> n >> k;
	for(i = 0; i < n; i++)
		fin >> v[i];
	fout << cb();
	fout.close();
	fin.close();
	return 0;
}