Cod sursa(job #1201936)

Utilizator pulseOvidiu Giorgi pulse Data 26 iunie 2014 14:30:47
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <fstream>
#include <algorithm>

using namespace std;

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

const int INF = 256000000;
const int Nmax = 16005;
int n, k, m, l, r, sum, sol, v[Nmax];

void read();
void solve();

int main()
{
	read();
	solve();
	fin.close();
	fout.close();
	return 0;
}

void solve()
{
	r = INF;
	while (l <= r)
	{
		sum = 0;
		sol = 1;
		m = (l + r) / 2;
		for (int i = 1; i <= n; ++i)
		{
			if (sum + v[i] <= m)
				sum += v[i];
			else
			{
				++sol;
				sum = v[i];
			}
		}
		if (sol <= k)
			r = m - 1;
		else
			l = m + 1;
	}
	fout << l << '\n';
}

void read()
{
	fin >> n >> k;
	for (int i = 1; i <= n; ++i)
	{
		fin >> v[i];
		l = max(l, v[i]);
	}
}