Pagini recente » Cod sursa (job #147945) | Cod sursa (job #2204136) | Cod sursa (job #333729) | Cod sursa (job #233444) | Cod sursa (job #1815352)
#include <fstream>
using namespace std;
int v[16001];
int n, k;
bool verificare(int mij)
{
int s = 0, nrtransport = 1;
for (int i = 1; i <= n; ++i)
{
s = s + v[i];
if (v[i] > mij)
return 0;
if (s > mij)
{
nrtransport++;
s = v[i];
}
}
if (nrtransport <= k)
return 1;
return 0;
}
int main()
{
ifstream cin ("transport.in");
ofstream cout ("transport.out");
cin >> n >> k;
for (int i = 1; i <= n; ++i)
cin >> v[i];
int st = 0, dr = 256000000;
while (st <= dr)
{
int mij = (st + dr) / 2;
/// facem verificare
if (verificare(mij) == 0)
st = mij + 1;
else
dr = mij - 1;
}
cout << st << '\n';
return 0;
}