Pagini recente » Cod sursa (job #2532770) | Cod sursa (job #720729) | Cod sursa (job #2597370) | Cod sursa (job #1977262) | Cod sursa (job #2941278)
#include <iostream>
#include <fstream>
using namespace std;
int a[16001], n, k;
bool da(int x)
{
int s = 0,cnt=1;
for (int i = 1; i <= n; i++)
{
if (a[i] > x)
return false;
if (s + a[i] <= x)
s += a[i];
else
{
cnt++;
s = a[i];
}
}
return (cnt <= k);
}
int main()
{
ifstream fin("transport.in");
ofstream fout("transport.out");
fin >> n >> k;
for (int i = 1; i <= n; i++)
fin >> a[i];
int st = 1, dr = 16000 * 16000;
int nr = 0;
while (st <= dr)
{
int mij = (st + dr) / 2;
if (da(mij))
{
nr = mij;
dr = mij - 1;
}
else
st = mij + 1;
}
fout << nr;
return 0;
}