Pagini recente » Cod sursa (job #2614280) | Cod sursa (job #2761355) | Cod sursa (job #2579270) | Cod sursa (job #343508) | Cod sursa (job #2541580)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
const int dim = 16005;
int n,k;
int saltele[dim];
bool Pot(int val)
{
int i = 1,cnt = 0,luate = 0;
while (i <= n)
{
int s = 0;
while (i <= n && s + saltele[i] <= val)
{
luate++;
s += saltele[i];
i++;
}
cnt++;
if (s == 0)
i++;
}
return (luate == n && cnt <= k);
}
int main()
{
in >> n >> k;
for (int i=1; i<=n; i++)
{
in >> saltele[i];
}
int st = 1;
int dr = dim*dim,ans;
while (st <= dr)
{
int mij = (st + dr)/2;
int ok = Pot(mij);
if (ok == 1)
{
dr = mij - 1;
ans = mij;
}
else st = mij + 1;
}
out << ans;
return 0;
}