Pagini recente » Cod sursa (job #3281487) | Cod sursa (job #3182184) | Cod sursa (job #3144743) | Cod sursa (job #1505041) | Cod sursa (job #1521669)
#include <fstream>
using namespace std;
int v[16001], n, k;
int charged(int cap)
{
int c = 0, tr = 1;
for(int i = 0; i < n; i++)
{
if(c + v[i] <= cap)
c += v[i];
else
{
c = 0;
c += v[i];
tr++;
}
}
if(tr <= k)
return 1;
return 0;
}
int cauta(int first, int last)
{
while(first <= last)
{
int mid = (first + last) / 2;
if(charged(mid) == 0 && charged(mid + 1) == 1)
return mid + 1;
else
if(charged(mid) == 1 && charged(mid + 1) == 1)
last = mid;
else
first = mid;
}
}
int main()
{
ifstream in("transport.in");
int m = 0;
in >> n >> k;
for(int i = 0; i < n; i++)
{
in >> v[i];
if(v[i] > m)
m = v[i];
}
in.close();
ofstream out("transport.out");
out << cauta(0, m * n);
out.close();
}