Pagini recente » Cod sursa (job #2427524) | Cod sursa (job #929820) | Cod sursa (job #1004385) | Cod sursa (job #557375) | Cod sursa (job #1521770)
#include <limits.h>
#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, long long int last)
{
while(first < last)
{
int mid = (first + last) / 2;
if(charged(mid))
last = mid;
else
first = mid + 1;
}
return first;
}
int main()
{
ifstream in("transport.in");
int m = 0;
long long int s;
in >> n >> k;
for(int i = 0; i < n; i++)
{
in >> v[i];
if(v[i] > m)
m = v[i];
s += v[i];
}
in.close();
ofstream out("transport.out");
out << cauta(m, s);
out.close();
}