Cod sursa(job #2805944)

Utilizator dfettiDaniel Fetti dfetti Data 22 noiembrie 2021 09:45:51
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int n, k;
int a[16001];

int check(int c)
{
	int aux = 0;
	int t = 1;

	for (int i = 0; i < n; ++i)
	{
		if (aux + a[i] <= c)
		{
			aux += a[i];
		}
		else
		{
			t++;
			aux = a[i];
		}
	}

	return t;
}

int main()
{
	int a_sum = 0;
	int a_max = 0;
	
	fin >> n >> k;
	for (int i = 0; i < n; ++i)
	{
		fin >> a[i];
		a_sum += a[i];
		if (a[i] > a_max)
			a_max = a[i];
	}
	

	int lo = a_max;
	int hi = a_sum;
	int mid = 0;

	while (lo < hi)
	{
		mid = (lo + hi) / 2;

		if (check(mid) <= k)
		{
			hi = mid;
		}
		else
		{
			lo = mid + 1;
		}
	}

	fout << lo;

	return 0;
}