Pagini recente » Cod sursa (job #666310) | Cod sursa (job #2797127) | Cod sursa (job #255310) | Cod sursa (job #41337) | Cod sursa (job #3265313)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
int a[16001], n, m, i, k, j, l, mid;
int IsOK(int x)
{
int s = 0, cnt = 1;
for (i = 1; i <= n; i++)
{
if (a[i] > x)
return 0;
s += a[i];
if (s > x)
{
cnt++;
s = a[i];
}
}
if (cnt <= k)
return 1;
return 0;
}
int BinarySearch(int a[])
{
int st = 1, dr = 256000000, ok = -1;
while (st <= dr)
{
mid = st + (dr - st) / 2;
if (IsOK(mid))
{
ok = mid;
dr = mid - 1;
}
else st = mid + 1;
}
return ok;
}
int main()
{
in >> n >> k;
for (i = 1; i <= n; i++)
in >> a[i];
out << BinarySearch(a);
return 0;
}