Pagini recente » Cod sursa (job #2757881) | Cod sursa (job #2442140) | Cod sursa (job #426689) | Cod sursa (job #1139532) | Cod sursa (job #2299511)
#include <bits/stdc++.h>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
const int MAX = 16005;
int n, k;
int v[MAX];
void Read()
{
f >> n >> k;
for(int i = 1; i <= n; ++i)
f >> v[i];
}
bool Check(int capacity)
{
int sum = 0, cargos = 1;
for(int i = 1; i <= n; ++i)
{
if(v[i] > capacity)
return false;
if(v[i] + sum <= capacity)
sum += v[i];
else
{
sum = v[i];
++cargos;
if(cargos > k)
return false;
}
}
return true;
}
int Binary_Search()
{
int r = 0;
for(int pas = 1 << 30; pas; pas >>= 1)
if(Check(r + pas) == false)
r += pas;
return r + 1;
}
int main()
{
Read();
g << Binary_Search();
return 0;
}